我们正在尝试将组分配到gcp中的项目下的特定角色。我们有一个定义的gcp项目相关变量的映射
project_details = {
"test-project-1" = {
project_id = "test-project-1"
project_name = "test-project-1"
}
"test-project-2" = {
project_id = "test-project-2"
project_name = "test-project-2"
}
}我们有另一个定义了角色和成员的映射,这是非常静态的。
role_bind = {
"billing_admin" = {
name = "roles/billing.admin"
member = ["group:gcp-******"]
}
"billing_viewer" = {
name = "roles/billing.viewer"
member = ["group:gcp-******"]
}
}我们希望使用映射变量project_details来使用google_project_iam_member资源遍历项目id
喜欢
for_each = var.project_details
project = each.value.project_id然后,对于每个项目id,我们希望使用另一个映射变量role_bind来分配角色。
我们可以通过任何方式( for_each中的for_each )实现这一点吗?任何帮助都将不胜感激。
发布于 2021-09-07 13:52:56
Terraform不支持嵌套for each或嵌套计数。通常有两种方法可以做到这一点,一种是使用len(var.role_bind) * len(varproject_details)计数并使用模数查找元素,另一种是使用嵌套的理解。嵌套的理解更具可读性,因此让我们使用它:
locals {
project_role = flatten([for pi : project in var.project_details :
[ for ri : role in var.role_details {
rolename = role.name
projectname = project.project_name
projectid = project.project_id
member = role.member
}]
])
}然后,您可以在语句中使用带有计数的local.project_role。
https://stackoverflow.com/questions/69088303
复制相似问题