【问题标题】:terraform hcl object transformationterraform hcl 对象转换
【发布时间】:2021-08-10 10:36:45
【问题描述】:

有一个类似的对象

variable "user_role" {
  type = map(list(string))
}

user_role = {
 user_a: ['role_a', 'role_b', 'role_c']
 user_b: ['role_a', 'role_c']
 user_c: ['role_c']
}

我目前拥有的只是简单的扁平化:

role-user = flatten([
    for member in keys(var.user_role): [
      for value in var.user_role[member] : {
        role = value
        member = member
      }
    ]
  ])

需要将其转换为键。

role_user = {
  role_a: ['user_a', 'user_b']
  role_b: ['user_a']
  role_c: ['user_a', 'user_b', 'user_c']
}

关于如何实现这一目标的任何想法?谢谢

【问题讨论】:

    标签: terraform hcl


    【解决方案1】:

    你可以这样做(不要忘记...):

    role-user = merge([
               for user, roles in var.user_role:
                {
                  for role in roles: user => role...
                }
               ]...)
    

    【讨论】:

    • 似乎是一样的,- 用户作为键。但我需要一个角色才能成为关键。我已经改变了一点,但没有运气。 user_role = { user_a: ["role_a", "role_b", "role_c"] user_b: ["role_a", "role_c"] user_c: ["role_c"] } role_user = merge([ for user, roles in local.user_role: { for role in roles: role => user... } ]...) --------------- # terraform 控制台 > local.role_user { "role_a" = [ "user_b", ] "role_b" = [ "user_a", ] "role_c" = [ "user_c", ] }
    • 对不起,一团糟,不明白为什么忽略换行符
    • @JohnnieWalker 对不起,我不明白你在问什么。您已经接受了其他答案。也许在那里问?
    【解决方案2】:

    根据您的示例,您似乎在描述the built-in transpose function 的功能:

    locals {
      role_user = transpose(var.user_role)
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-21
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      相关资源
      最近更新 更多