基于 Terraform 中多个资源目标的 json 响应的嵌套循环

Nested loop based on json response in Terraform for multiple resource target

数组:

regions = [
        {name: "region1"}, 
        {name: "region2"}, 
        {name: "region3"}, 
        {name: "region4"}, 
        {name: "region5"}, 
        {name: "region6"}]

Json:

{
    "region1" : ["cluster1"],
    "region2" : [],
    "region3" : ["cluster1"],
    "region4" : ["cluster1","cluster2"]
}


resource "type" "name" {
     count = length(regionLength)
     name = "region-name/cluster-name"
}

我需要用这样的名称输出创建的资源

我们也能做到吗: 最终 = []

For r , cs in arr: 
    for oc in regions:
        if r == oc.name:
            for c in cs:    
                oc[‘cluster’] = r-c
                Final.push(oc)

提前致谢。

您可以通过以下方式实现:


variable "regions" {
    default = {
    "region1" : ["cluster1"],
    "region2" : [],
    "region3" : ["cluster1"],
    "region4" : ["cluster1","cluster2"]
    }
}


locals {
    region_list = flatten([for region, clusters in var.regions:
                      [  for cluster in coalescelist(clusters, [""]):
                         "${region}/${cluster}" 
                      ]
                   ])
}

给出:

region_list = [
  "region1/cluster1",
  "region2/",
  "region3/cluster1",
  "region4/cluster1",
  "region4/cluster2",
]