Преобразование списка (карта (список (карта (строка)))) в карту (список (карта (строка))) с помощью terraform - PullRequest
1 голос
/ 27 апреля 2020

Привет, есть какой-нибудь удобный способ преобразовать список (карту (список (карта (строка)))) в карту (список (карта (строка))) с помощью terraform.

Вот что мой структура ввода выглядит как

`variable "data" {
  type = list(map(list(map(string))))
  default = [
    {
      secrets = [
        {
          secret-name   = "secret1"
          secret-label  = "label1"
        },
        {
          secret-name   = "secret2"
          secret-label  = "label2"
        }
      ],
      config-maps = [
        {
          config-map-name =  "conf1"
          java-options    = "-Xmx256m"
          config-label    = "develop"
        }
      ]
    },
    {
      secrets = [
        {
          secret-name   = "secret3"
          secret-label  = "label3"
        }
      ],
      config-maps = [
        {
          config-map-name =  "conf2"
          java-options = "-Xmx256m"
          config-label = "develop"
        }
      ]
    }
  ]
}`

и вот как я хочу, чтобы она выглядела

`data = {
        secrets     = [
                        {
                          secret-name   = "secret1"
                          secret-label  = "label1"
                        },
                        {
                          secret-name   = "secret2"
                          secret-label  = "label2"
                        },
                        {
                          secret-name   = "secret3"
                          secret-label  = "label3"
                        },
                      ],
        config-maps = [
                        {
                          config-map-name =  "conf1"
                          java-options    = "-Xmx256m"
                          config-label    = "develop"
                        },
                        {
                          config-map-name =  "conf2"
                          java-options = "-Xmx256m"
                          config-label = "develop"
                        }
                      ]
      }

Не могли бы вы, ребята, помочь мне в этом, пожалуйста? Ps: желательно в части местных жителей

1 Ответ

2 голосов
/ 28 апреля 2020

Тогда, как насчет этого?

locals {
  values = flatten([
    for d in var.data : [
      for _, v in d : v
    ]
  ])
  keys = flatten([
    for d in var.data : [
      for k, v in d : [
        for _ in v : k
      ]
    ]
  ])
}

output data {
  value = {
    for k in distinct(local.keys) :
    k => matchkeys(local.values, local.keys, [k])
  }
}

Надеюсь, это поможет.

...