terraform hcl 对象转换
terraform hcl object transformation
有一个像
的对象
variable "user_role" {
type = map(list(string))
}
user_role = {
user_a: ['role_a', 'role_b', 'role_c']
user_b: ['role_a', 'role_c']
user_c: ['role_c']
}
我目前拥有的只是简单的扁平化为:
role-user = flatten([
for member in keys(var.user_role): [
for value in var.user_role[member] : {
role = value
member = member
}
]
])
需要对其进行改造使其具有密钥的作用。
role_user = {
role_a: ['user_a', 'user_b']
role_b: ['user_a']
role_c: ['user_a', 'user_b', 'user_c']
}
关于如何实现这一点有什么想法吗?谢谢
您可以按如下方式进行(不要忘记 ...):
role-user = merge([
for user, roles in var.user_role:
{
for role in roles: user => role...
}
]...)
根据您的示例,您似乎在描述 the built-in transpose
function:
的功能
locals {
role_user = transpose(var.user_role)
}
有一个像
的对象variable "user_role" {
type = map(list(string))
}
user_role = {
user_a: ['role_a', 'role_b', 'role_c']
user_b: ['role_a', 'role_c']
user_c: ['role_c']
}
我目前拥有的只是简单的扁平化为:
role-user = flatten([
for member in keys(var.user_role): [
for value in var.user_role[member] : {
role = value
member = member
}
]
])
需要对其进行改造使其具有密钥的作用。
role_user = {
role_a: ['user_a', 'user_b']
role_b: ['user_a']
role_c: ['user_a', 'user_b', 'user_c']
}
关于如何实现这一点有什么想法吗?谢谢
您可以按如下方式进行(不要忘记 ...):
role-user = merge([
for user, roles in var.user_role:
{
for role in roles: user => role...
}
]...)
根据您的示例,您似乎在描述 the built-in transpose
function:
locals {
role_user = transpose(var.user_role)
}