【发布时间】:2019-06-14 19:05:14
【问题描述】:
Terraform v0.10.7 AWS 提供商版本 = "~> 1.54.0"
是否有任何示例如何在 Terraform 中将字符串或列表转换为地图?
我们正在像这样设置 Consul 键/值存储:
consul kv put common/rules/alb/service1 name=service1,port=80,hcproto=http,hcport=80
我可以正确访问键和值,现在我正在尝试将值用作 Terraform 中的地图:
data "consul_key_prefix" "common" {
path_prefix = "common/rules"
}
output "common"{
value = "${jsonencode(lookup(var.CommonRules,element(keys(var.CommonRules),1))) }"
}
$ terraform 输出
common = "{name=service1,port=80,hcproto=http,hcport=80}"
但是当我尝试将其作为地图访问时,它不起作用:
output "common"{
value = "${lookup(jsonencode(lookup(var.CommonRules,element(keys(var.CommonRules),1))),"name") }"
}
$ terraform 输出
(没有回应)
我在这里尝试了一些东西 - 例如。拆分这些值并再次将它们加入一个列表,然后运行“地图”功能,但它也不起作用:
$ terraform 输出
common = [
name,
service1,
port,
80,
hcproto,
http,
hcport,
80
]
然后尝试创建该列表的地图:
output "common2" {
value = "${map(split(",",join(",",split("=",lookup(var.CommonRules,element(keys(var.CommonRules),1))))))}"
}
但它也不起作用。
所以我的问题是 - 有没有人有他将字符串(或列表)翻译成地图的工作示例?
提前致谢。
【问题讨论】:
-
您是否尝试过使用this question 中定义的
external数据源。看起来如果您在external数据源中echo输出来自consul_key_prefix数据源的输出,则其输出将是基于其 json 输出的映射。 -
是的,它可以与外部数据源一起使用,谢谢,但是对于这个我想看看是否有任何方法可以只使用 Terraform,但看起来 Terraform
标签: terraform terraform-provider-aws