How to copy-past block into content of dynamic block
For a list
locals{
x = [ { yyy = { a=1 } }, { yyy = { b=2 } } ]
}
I want to "copy-past" block yyy into content{} section of a dynamic block
dynamic "test" {
for_each = local.x
content {
zzz {x.yyy}
}
}
So the result should be
test{
zzz {a=1}
}
test{
zzz {b=2}
}
Is it possible without manually coping each field:
content {
zzz {
a=ifnotnull(x.yyy.a)
b=ifnotnull(x.yyy.b)
}
}
You'll need another dynamic
for the inner block.
But you must specify the attributes (the names) in the block. So assuming the possible attributes in the zzz
block are a
and b
, something like this should work:
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)
}
}
}
}
Note that the yyy
map is not needed, so if you control the structure of the input data, it could be just x = [ { a=1 }, { b=2 } ]
, and the inner iterator for_each = [test.value]
.