如何将块复制粘贴到动态块的内容中
How to copy-past block into content of dynamic block
列表
locals{
x = [ { yyy = { a=1 } }, { yyy = { b=2 } } ]
}
我想将块 yyy“复制过去”到动态块的内容{}部分
dynamic "test" {
for_each = local.x
content {
zzz {x.yyy}
}
}
所以结果应该是
test{
zzz {a=1}
}
test{
zzz {b=2}
}
是否可以不手动处理每个字段:
content {
zzz {
a=ifnotnull(x.yyy.a)
b=ifnotnull(x.yyy.b)
}
}
您需要另一个 dynamic
用于内部块。
但是您必须在块中指定属性(名称)。所以假设 zzz
块中可能的属性是 a
和 b
,这样的事情应该有效:
dynamic "test" {
for_each = local.x
content {
dynamic "zzz" {
for_each = [test.value.yyy]
content {
a = lookup(zzz.value, "a", null)
b = lookup(zzz.value, "b", null)
}
}
}
}
请注意,不需要 yyy
映射,因此如果您控制输入数据的结构,它可以只是 x = [ { a=1 }, { b=2 } ]
,以及内部迭代器 for_each = [test.value]
。
列表
locals{
x = [ { yyy = { a=1 } }, { yyy = { b=2 } } ]
}
我想将块 yyy“复制过去”到动态块的内容{}部分
dynamic "test" {
for_each = local.x
content {
zzz {x.yyy}
}
}
所以结果应该是
test{
zzz {a=1}
}
test{
zzz {b=2}
}
是否可以不手动处理每个字段:
content {
zzz {
a=ifnotnull(x.yyy.a)
b=ifnotnull(x.yyy.b)
}
}
您需要另一个 dynamic
用于内部块。
但是您必须在块中指定属性(名称)。所以假设 zzz
块中可能的属性是 a
和 b
,这样的事情应该有效:
dynamic "test" {
for_each = local.x
content {
dynamic "zzz" {
for_each = [test.value.yyy]
content {
a = lookup(zzz.value, "a", null)
b = lookup(zzz.value, "b", null)
}
}
}
}
请注意,不需要 yyy
映射,因此如果您控制输入数据的结构,它可以只是 x = [ { a=1 }, { b=2 } ]
,以及内部迭代器 for_each = [test.value]
。