小编nib*_*ras的帖子

Terraform 在地图列表中循环

我有一个 Terraform 模块,可以生成地图输出列表:

object_ids = [
  {
    "object_id" = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
    "upn" = "john@domain.com"
    "user" = "john"
  },
  {
    "object_id" = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx"
    "upn" = "martin@domain.com"
    "user" = "martin"
  },
]
Run Code Online (Sandbox Code Playgroud)

使用 for_each 我可以循环一个值来构建此资源:

resource "azurerm_role_assignment" "subread" {
    for_each = toset(module.user.map_object_ids[*].object_id)
    scope                = data.azurerm_subscription.primary.id
    role_definition_name = "Reader"
    principal_id         = each.value
}
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何循环多个值。

我尝试了以下方法来获取另一个需要 2 个不同输出值的资源:

resource "azurerm_role_assignment" "contribrg" {
    scope                = [for map in module.user.map_object_ids[*]: "${data.azurerm_subscription.primary.id}/resourceGroups/${lookup(map,"user")}"]
    role_definition_name = "Contributor"
    principal_id         = [for map in module.user.map_object_ids[*]: lookup(map,"object_id")]
}
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

Error: Incorrect attribute value …
Run Code Online (Sandbox Code Playgroud)

terraform terraform-provider-azure

5
推荐指数
1
解决办法
6485
查看次数