terraform 动态地将列表转换为字符串
terraform convert list to string dynamically
我需要从 for_each 生成的 tuple/list 中提取字符串。
如何在每个角色的成员中传递“account1”和“account2”?
variable "binding" {
type = map
default = {
"roles/viewer" = [
"account1",
"account2",
],
"roles/logging.viewer" = [
"account1",
"account2",
],
}
}
resource "google_project_iam_member" "test-sa-binding" {
project = var.PROJECT_ID
for_each = var.binding
role = each.key
member = ???
}
谢谢,
你必须先展平你的变量:
locals {
flat_binding = merge([
for role, accounts in var.binding:
{
for idx, account in accounts:
"${role}-${idx}" => {
account = account
role = role
}
}
]...) # pls, do NOT remove the dots
}
然后
resource "google_project_iam_member" "test-sa-binding" {
project = var.PROJECT_ID
for_each = local.flat_binding
role = each.value["role"]
member = each.value["account"]
}
我需要从 for_each 生成的 tuple/list 中提取字符串。
如何在每个角色的成员中传递“account1”和“account2”?
variable "binding" {
type = map
default = {
"roles/viewer" = [
"account1",
"account2",
],
"roles/logging.viewer" = [
"account1",
"account2",
],
}
}
resource "google_project_iam_member" "test-sa-binding" {
project = var.PROJECT_ID
for_each = var.binding
role = each.key
member = ???
}
谢谢,
你必须先展平你的变量:
locals {
flat_binding = merge([
for role, accounts in var.binding:
{
for idx, account in accounts:
"${role}-${idx}" => {
account = account
role = role
}
}
]...) # pls, do NOT remove the dots
}
然后
resource "google_project_iam_member" "test-sa-binding" {
project = var.PROJECT_ID
for_each = local.flat_binding
role = each.value["role"]
member = each.value["account"]
}