【发布时间】:2019-12-13 21:39:11
【问题描述】:
我有一张这样的地图列表 -
[
{
"outer_key_1" = [
{
"ip_cidr" = "172.16.6.0/24"
"range_name" = "range1"
},
{
"ip_cidr" = "172.16.7.0/24"
"range_name" = "range2"
},
{
"ip_cidr" = "172.17.6.0/24"
"range_name" = "range3"
},
{
"ip_cidr" = "172.17.7.0/24"
"range_name" = "range4"
},
]
},
{
"outer_key_2" = [
{
"ip_cidr" = "172.16.5.0/24"
"range_name" = "range5"
},
{
"ip_cidr" = "172.17.5.0/24"
"range_name" = "range6"
},
]
},
]
我想合并列表中的地图。这是在输出变量module.module_name.module_op 中。
所需输出:
{
"outer_key_1" = [
{
"ip_cidr" = "172.16.6.0/24"
"range_name" = "range1"
},
{
"ip_cidr" = "172.16.7.0/24"
"range_name" = "range2"
},
{
"ip_cidr" = "172.17.6.0/24"
"range_name" = "range3"
},
{
"ip_cidr" = "172.17.7.0/24"
"range_name" = "range4"
},
]
"outer_key_2" = [
{
"ip_cidr" = "172.16.5.0/24"
"range_name" = "range5"
},
{
"ip_cidr" = "172.17.5.0/24"
"range_name" = "range6"
},
]
}
我已经使用
locals {
result = merge(module.module_name.module_op[0], module.module_name.module_op[1])
}
我如何以更迭代的方式做到这一点。
我不会总是在我的列表中只有 2 张地图,它可以更多。
我尝试像这样在 terraform 12 中使用 for 循环 -
output "result" {
value = [ for tuple in module.module_name.module_op : merge(tuple) ]
}
还有这个——
output "secondary_subnets" {
value = { for tuple in module.module_name.module_op : merge(tuple) }
}
第一个返回我的输入,第二个返回一个错误,提示我需要添加一个键,因为我正在返回一个对象。
有没有办法做到这一点?
提前致谢。
【问题讨论】: