【问题标题】:Terraform iterate over a map of mapsTerraform 迭代地图的地图
【发布时间】:2021-04-26 21:26:01
【问题描述】:

我的输入如下:

list_groups= [
      {
           "dev-api-eu" = {
              envs  = [
                   "dev-eu-1",
                   "dev-eu-2",
                ]
             hosts = [
                   "dev-api-eu1",
                   "dev-api-eu2",
                ]
            }
           "dev-api-uk" = {
               envs  = [
                   "dev-uk-1",
                   "dev-uk-2",
                ]
               hosts = [
                   "dev-api-uk1",
                   "dev-api-uk2",
                ]
            }
        },
       {
           "dev-api-us" = {
               envs  = [
                   "dev-us-1",
                   "dev-us-2",
                ]
               hosts = [
                   "dev-api-us1",
                   "dev-api-us2",
                ]
            }
        },
    ]

现在我希望我的输出为 3 个带有 3 个键的地图:

"dev-api-eu"
"dev-api-uk"
"dev-api-us"

值没有变化。

下面是我想要的输出:

 map_groups1      = {
       dev-api-eu = {
           envs  = [
               "dev-eu-1",
               "dev-eu-2",
            ]
           hosts = [
               "dev-api-eu1",
               "dev-api-eu2",
            ]
        }
       dev-api-uk = {
           envs  = [
               "dev-uk-1",
               "dev-uk-2",
            ]
           hosts = [
               "dev-api-uk1",
               "dev-api-uk2",
            ]
        }
       dev-api-us = {
           envs  = [
               "dev-us-1",
               "dev-us-2",
            ]
           hosts = [
               "dev-api-us1",
               "dev-api-us2",
            ]
        }
    }

如果列表中的每个项目只有一个地图,则以下方法有效

map_groups1 = {
for record in local.list_groups:
  keys(record)[0] => values(record)[0]
}

上面的代码跳过了键“dev-api-uk”,只在结果中给出了两个映射。 但是,如您所见,我在输入列表中的第一项有两个地图,并且可以有 n 个地图。有什么想法吗?

【问题讨论】:

  • 您能否提供所需输出映射的完整示例?

标签: list maps terraform


【解决方案1】:

您可以将mergeexpantion 一起使用:

output "test" {  
    value = merge(var.list_groups...)
}

【讨论】:

  • 谢谢。它有帮助。我也有一个稍微不同的用例,因为这是一个不同的问题,所以我在这里提出了它:stackoverflow.com/questions/67282480/…。你能不能也看看那个。
猜你喜欢
  • 2020-12-09
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 2021-01-07
  • 2021-06-03
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
相关资源
最近更新 更多