terraform将变量值指定给映射字段值,如果不存在,则指定默认值

terraform将变量值指定给映射字段值,如果不存在,则指定默认值,terraform,Terraform,很抱歉问了一个基本的问题。。。但我找不到更优雅的方法来解决这个问题 输入: a = [ { one=1, two=2, three=3}, { two=2, three=3}, { one=1, three=3}, ] 在我的剧本中,我有一些 locals { containers = [for i, c in var.a : merge(c, { field1 = contains(keys(c), "one") ? c.one : "n

很抱歉问了一个基本的问题。。。但我找不到更优雅的方法来解决这个问题

输入:

a = [
    { one=1, two=2, three=3},
    { two=2, three=3},
    { one=1, three=3},
]
在我的剧本中,我有一些

locals {
    containers = [for i, c in var.a : merge(c, {
        field1    = contains(keys(c), "one") ? c.one : "not defined"
        field2    = contains(keys(c), "two") ? c.two : "not defined"
        field3    = contains(keys(c), "three") ? c.three : "not defined"
        lastfield = contains(keys(c), "one") ? (contains(keys(c), "two") ? "${c.one},${c.two}" : "${c.one}") : ""
    })]
}
有没有更优雅的方法?基本上,我想向列表的每个元素添加一些字段,我必须检查它元素有一个特定的字段,并使用这个值或默认值

此外,“lastfield”应参考字段1和字段2,而不是重新检查字段是否存在

我认为方法是使用一些中间空的资源来计算field1、field2、field3,然后使用lastfield中的资源,但这并不是最优的

如有任何建议,将不胜感激:)


谢谢

对于嵌套的默认值,这可能是您尝试实现的选项