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))) }"
}
$ 地形输出
common = "{name=service1,port=80,hcproto=http,hcport=80}"
但是当我尝试将其作为地图访问时,它不起作用:
output "common"{
value = "${lookup(jsonencode(lookup(var.CommonRules,element(keys(var.CommonRules),1))),"name") }"
}
$ 地形输出
(无回应)
我在这里尝试了一些事情 - 例如拆分这些值并将它们再次合并到一个列表中,然后运行"map"函数,但它也不起作用:
$ 地形输出
common = [
name,
service1,
port,
80,
hcproto,
http,
hcport,
80
]
然后尝试创建该列表的映射:
output "common2" {
value = "${map(split(",",join(",",split("=",lookup(var.CommonRules,element(keys(var.CommonRules),1))))))}"
}
但它也不起作用。
所以我的问题是 - 有没有人有他将字符串(或列表)翻译成地图的工作示例?
提前谢谢。
jsondecode
即将推出的Terraform v0.12
中的功能将成为解决此问题的工具。
jsondecode
函数 github 问题