【发布时间】:2020-10-22 00:58:22
【问题描述】:
我有一个生成地图输出列表的 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"
},
]
使用 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
}
但是我不知道如何循环多个值。
我对另一个需要输出 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")]
}
出现以下错误:
Error: Incorrect attribute value type
module.user.map_object_ids is tuple with 2 elements
Inappropriate value for attribute "scope": string required.
Inappropriate value for attribute "principal_id": string required.
【问题讨论】:
标签: terraform terraform-provider-azure