【问题标题】:Terraform .12 nested loopTerraform .12 嵌套循环
【发布时间】:2020-12-03 17:54:31
【问题描述】:

变量.tf

variable "teams" {
  type        = map(any)
  default     = {}
}

输入值:

teams = {
    {
      team_id    = "abc"
      role_names = ["owner"]
    },
    {
      team_id    = "bcd"
      role_names = ["read", "write"]
    }
  }
}

main.tf:

resource "mongodbatlas_project" "project" {
  name   = "testing"
  org_id = "123456"
    dynamic "teams" {
        for_each = var.teams
    
        content {
          id    = teams.value.team_id
          names = [teams.value.role_names]
        }
      }
}

我一直在尝试上面的代码,但它不起作用。是否有更简单的方法将嵌套团队值分配给变量?

【问题讨论】:

    标签: terraform terraform0.12+


    【解决方案1】:

    teams 变量对我来说似乎不正确,并且存在语法错误(例如,额外的 }in teams)。我认为应该是list,而不是map

    variable "teams" {
      type        = list(any)
      default     = []
    }
    

    然后

    teams = [
        {
          team_id    = "abc"
          role_names = ["owner"]
        },
        {
          team_id    = "bcd"
          role_names = ["read", "write"]
        }
      ]
    

    那么你的资源可能是:

    resource "mongodbatlas_project" "project" {
    
      name   = "testing"
      org_id = "123456"
    
      dynamic "teams" {
        for_each = toset(var.teams)
        
        content {
           id    = teams.value.team_id
           names = teams.value.role_names
        }
     }
    
    }
    

    使用dynamic blocks 时,迭代器的调用方式与块名相同。

    【讨论】:

      猜你喜欢
      • 2021-07-08
      • 2019-09-26
      • 2020-11-10
      • 2021-01-27
      • 2021-03-27
      • 2021-12-29
      • 2022-01-11
      • 1970-01-01
      • 2021-10-06
      相关资源
      最近更新 更多