【发布时间】:2021-01-23 20:23:36
【问题描述】:
我的配置中有以下 sn-ps - 想法是将当前逻辑/语法从 0.11 更改为 0.12。首先,我正在从列表中创建地图,
my_vars = zipmap(
var.foo_vars,
flatten(data.terraform_remote_state.foo.*.outputs.some_id)
)
然后对其进行迭代以生成一些键值对。
...
"var": [for key in keys(local.my_vars) :
{
name = key
value = lookup(local.my_vars, key)
}
],
...
这是相关的 tfvars 配置。
foo_vars = [
"A",
"B",
"C"
]
问题是这个逻辑似乎并没有保留顺序,我想不出一个好的方法来实现这一点。据我了解,一旦您将列表转换为带有zipmap 的地图,就会重新计算订单。有什么办法可以保留原始订单?
我不依赖于当前的解决方案,所以也许有一种方法可以生成不需要首先创建地图的键/值,并且可以只使用两个列表来完成?
~ foo = [
{
name = "A"
value = "1"
},
- {
- name = "B"
- value = "2"
},
{
name = "C"
value = "3"
},
+ {
+ name = "B"
+ valueFrom = "2"
},
]
【问题讨论】:
-
i 可能不正确,但我相信在该语法中迭代会隐式地将
list类型转换为无序的set类型,因此无论如何都会丢失排序。
标签: terraform terraform-provider-aws terraform0.12+