У меня что-то вроде этого
locals {
roles = [
{
role = "roles/admin"
members = ["user:user@example.com"]
},
{
role = "roles/viewer"
members = ["user:user2@example.com"]
}
]
}
Я хочу, чтобы мои модули могли экспортировать свой собственный список ролей, например
roles = [
{
role = "roles/viewer"
members = ["user:newperson@example.com"]
}
]
, а затем иметь возможность объединять эти вещи вместе чтобы получить
locals {
roles = [
{
role = "roles/admin"
members = ["user:user@example.com"]
},
{
role = "roles/viewer"
members = ["user:user2@example.com", "user:newperson@example.com"]
}
]
}
Я знаю, что если бы я сохранил все как карты, я мог бы объединить карты, и это будет работать нормально, пока нет повторяющихся ключей. Но в этом случае я явно хочу иметь возможность иметь повторяющиеся ключи, чтобы одному модулю не нужно было заботиться о каких-либо других модулях.
Обновление Мне удалось добиться этого сделав что-то вроде этого:
roles = distinct(flatten([
for rm in local.role_maps : [
for role, members in rm :
{
role = role
members = sort(distinct(flatten([
for m in local.role_maps :
m[role] if lookup(m, role, null) != null
])))
}
]
]))