Terraform 将元组元素组合为列表
Terraform Combine tuple elements as list
有人可以建议如何将 terraform 元组与要列出的元素组合起来,如下所示。
场景:
我有一堆 yaml 文件结构如下,我用本地值将它们展平并分配给资源属性。
在我的资源上,我需要将角色值分配为列表,示例如下
roles = local.acs_tup #["READER,OWNERSHIP","OWNERSHIP1","READER1,DEVELOPER1"]
yaml 文件内容格式
schemagrants :
- schema: BDV
privilege: USAGE
roles:
- READER
- OWNERSHIP
environment: DEV
- schema: BDV
privilege: USAGE
roles:
- OWNERSHIP1
- DEVELOPER1
environment: DEV
- schema: CDV
privilege: USAGE
roles:
- DEVELOPER2
environment: DEV
locals {
acs_files = fileset("./objects/schema-accessgrant", "*.yml")
acs_data = [for f in local.acs_files : yamldecode(file("./objects/schema-accessgrant/${f}"))]
acs_flatten = flatten([for access in local.acs_data :
[for sgr in access.schemagrants : {
id = "${sch.schema}.${sch.privilege}.${sch.environment}"
roles = sgr.roles
environment = sgr.environment
}
]]
)
acs_tup = [for roles in local.acs_flatten :
{
role = join(",", roles.roles)
}
]
}
resource "snowflake_database_grant" "database-access" {
database_name = "database"
privilege = "USAGE"
roles = local.acs_tup #["READER,OWNERSHIP","OWNERSHIP1","DEVELOPER1","DEVELOPER2"]
shares = []
with_grant_option = false
}
# Current Output
[ + {
+ role = "READER,OWNERSHIP"
},
+ {
+ role = "ONWERSHIP1,DEVELOPER1"
},
+ {
+ role = "DEVELOPER2"
},
]
# Expected Output
["READER,OWNERSHIP","OWNERSHIP1","DEVELOPER1","DEVELOPER2"]
假设您的预期输出应该是 ["READER","OWNERSHIP","OWNERSHIP1","DEVELOPER1","DEVELOPER2"]
,您的 acs_tup
必须是:
acs_tup = flatten([for roles in local.acs_flatten: roles.roles])
有人可以建议如何将 terraform 元组与要列出的元素组合起来,如下所示。
场景: 我有一堆 yaml 文件结构如下,我用本地值将它们展平并分配给资源属性。
在我的资源上,我需要将角色值分配为列表,示例如下
roles = local.acs_tup #["READER,OWNERSHIP","OWNERSHIP1","READER1,DEVELOPER1"]
yaml 文件内容格式
schemagrants :
- schema: BDV
privilege: USAGE
roles:
- READER
- OWNERSHIP
environment: DEV
- schema: BDV
privilege: USAGE
roles:
- OWNERSHIP1
- DEVELOPER1
environment: DEV
- schema: CDV
privilege: USAGE
roles:
- DEVELOPER2
environment: DEV
locals {
acs_files = fileset("./objects/schema-accessgrant", "*.yml")
acs_data = [for f in local.acs_files : yamldecode(file("./objects/schema-accessgrant/${f}"))]
acs_flatten = flatten([for access in local.acs_data :
[for sgr in access.schemagrants : {
id = "${sch.schema}.${sch.privilege}.${sch.environment}"
roles = sgr.roles
environment = sgr.environment
}
]]
)
acs_tup = [for roles in local.acs_flatten :
{
role = join(",", roles.roles)
}
]
}
resource "snowflake_database_grant" "database-access" {
database_name = "database"
privilege = "USAGE"
roles = local.acs_tup #["READER,OWNERSHIP","OWNERSHIP1","DEVELOPER1","DEVELOPER2"]
shares = []
with_grant_option = false
}
# Current Output
[ + {
+ role = "READER,OWNERSHIP"
},
+ {
+ role = "ONWERSHIP1,DEVELOPER1"
},
+ {
+ role = "DEVELOPER2"
},
]
# Expected Output
["READER,OWNERSHIP","OWNERSHIP1","DEVELOPER1","DEVELOPER2"]
假设您的预期输出应该是 ["READER","OWNERSHIP","OWNERSHIP1","DEVELOPER1","DEVELOPER2"]
,您的 acs_tup
必须是:
acs_tup = flatten([for roles in local.acs_flatten: roles.roles])