Terraform v0.11.7中如何向zipmap值侧追加字符串?
解决方案:在Terraform v0.11.7中为zipmap的value追加字符串
在Terraform v0.11.7里,直接用"*" + random_shuffle.x.result"这种写法是行不通的——因为字符串和列表类型不兼容,没法直接相加。不过我们可以借助formatlist函数来逐个处理列表里的元素,实现给每个value前缀加*的效果。
具体的表达式写法如下:
my_expression = "${zipmap(random_shuffle.x.result, formatlist("*%s", random_shuffle.x.result))}"
原理说明:
formatlist("*%s", random_shuffle.x.result):这个函数会遍历random_shuffle.x.result列表中的每一个元素,把每个元素代入*%s的格式化字符串里,生成一个新的列表。比如原列表是["foo", "bar"],处理后就变成了["*foo", "*bar"]。zipmap函数会把原列表(作为key)和格式化后的新列表(作为value)一一对应,生成你想要的映射结构。
举个例子,如果random_shuffle.x.result的输出是["a", "b", "c"],最终my_expression的结果会是:
{ "a" = "*a" "b" = "*b" "c" = "*c" }
内容的提问来源于stack exchange,提问作者goldver
相关产品推荐
相关产品推荐

