Terraform 通过包含嵌套映射的json填充资源的地形
有没有一种方法可以循环使用json文件来填充我的Terraform 通过包含嵌套映射的json填充资源的地形,terraform,Terraform,有没有一种方法可以循环使用json文件来填充我的aiven_kafka\u主题资源 我的尝试如下。但是,我在dynamicconfig块上遇到了问题。 参数“inputMap”的值无效:lookup()需要一个映射作为第一个参数。 config是键=值对的可选映射 { “主题”:[ { “姓名”:“猫王”, “分区”:1, “复制品”:1 }, { “姓名”:“查克”, “分区”:24, “复制品”:7, “配置”:{ “第一条”:“foo”, “第二条”:“酒吧” } } ] } 每个主题
aiven_kafka\u主题
资源
我的尝试如下。但是,我在dynamic
config块上遇到了问题。
参数“inputMap”的值无效:lookup()需要一个映射作为第一个参数。
config是键=值对的可选映射
{
“主题”:[
{
“姓名”:“猫王”,
“分区”:1,
“复制品”:1
},
{
“姓名”:“查克”,
“分区”:24,
“复制品”:7,
“配置”:{
“第一条”:“foo”,
“第二条”:“酒吧”
}
}
]
}
每个主题对象的输入数据结构只有一个
config
对象,因此资源中的config
块不需要dynamic
块:
resource "aiven_kafka_topic" "this" {
for_each = { for topic in local.topics : topic.name => topic }
project = var.project_name
service_name = var.kafka_service_name
topic_name = each.value.name
partitions = each.value.partitions
replication = each.value.replicas
config {
cleanup_policy = try(each.value.config.cleanup_policy, null)
compression_type = try(each.value.config.compression_type, null)
# ...
}
}
您在第一次尝试中看到的错误原因是动态“config”
块指示Terraform在config对象中为每个元素生成一个config
块,因此该块中的config.key
是一个单独的配置项,config.value
是该项的值,这是一个字符串,因此与查找
不兼容
我上面的新示例只直接使用单个
config
对象,而不在其元素上重复,因此结果将只有一个config
块,其参数可以设置,也可以不设置,这取决于源对象中是否设置了相应的属性。已更新。我从查找开始,但没有真正起作用。我想要的是从json文件转换配置映射,并将其用作资源的配置。
resource "aiven_kafka_topic" "this" {
for_each = { for topic in local.topics : topic.name => topic }
project = var.project_name
service_name = var.kafka_service_name
topic_name = each.value.name
partitions = each.value.partitions
replication = each.value.replicas
config {
cleanup_policy = try(each.value.config.cleanup_policy, null)
compression_type = try(each.value.config.compression_type, null)
# ...
}
}