gpt4 book ai didi

for-loop - 在 terraform 中合并列表内的 map

转载 作者:行者123 更新时间:2023-12-03 18:17:21 34 4
gpt4 key购买 nike

我有一个这样的 map 列表 -

[
{
"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"
},
]
},
]

我想合并列表中的 map 。这是在输出变量 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 张 map ,它可以更多。

我尝试在 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) }
}

第一个给了我我的输入,第二个给了我一个错误,说我需要添加一个键,因为我正在返回一个对象。

有没有办法做到这一点?

提前致谢。

最佳答案

您实际上可以将 map 列表传递给 merge()功能:

The Terraform language has a general feature for turning lists/tuples into multiple arguments, by using the special symbol ... after the last argument expression



因此,在上面的示例中,您可以执行以下操作:
locals {
result = merge(module.module_name.module_op...)
}

这将合并列表中的所有 map ,允许动态调整大小的列表。

关于for-loop - 在 terraform 中合并列表内的 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57392101/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com