【发布时间】:2021-11-27 14:35:30
【问题描述】:
我在 yaml 文件中定义了资源输入,在 main.tf 中我使用 yamldecode 来检索资源属性。一般来说,当我有角色“roles:ADMIN”的字符串值时,它会起作用。但是我需要根据角色中定义的列表值来迭代我的资源。请指教。
我尝试了 terraform "count" 参数,但出现如下错误
错误:“count”和“for_each”的组合无效 │ │ 在 main.tf 第 214 行,在资源“snowflake_schema_grant”“grant”中: │ 214: for_each = { for ac in local.acs : ac.databasename => ac } │ │ "count" 和 "for_each" 元参数是互斥的,只能使用一个来明确要创建的资源数量。
grants:
- schemaname: SCHEMA1
databasename: DEMO
privilege: MODIFY
roles: [ADMIN,SYSADMIN]
- schemaname: SCHEMA2
databasename: DEMO
privilege: USAGE
roles: [USER1,USER2]
locals {
acs = yamldecode(file("./access.yaml"))
}
resource "snowflake_schema_grant" "grant" {
for_each = { for ac in local.acs.grants : ac.schemaname => ac }
#count = length(each.value.privilege)
database_name = each.value.databasename
schema_name = each.value.schemaname
privilege = each.value.privilege
roles = each.value.roles
}
我想运行我的资源迭代 4 次,如下所示
- DEMO、SCHEMA1、修改、AMDIN
- DEMO、SCHEMA1、修改、系统管理员
- DEMO,SCHEMA2, USAGE, USER1
- DEMO、SCHEMA2、USAGE、USER2
【问题讨论】:
-
“计数或加入不起作用” - 这是什么意思?有什么错误吗?
schemagrants是什么? -
@Marcin 抱歉,我现在已经简化了。希望现在问题清楚了吗?
-
你确定这是你的正确 yaml 吗?因为后半部分完全覆盖了前半部分。
-
@Marcin 你是对的,我复制了错误的 yaml。请查看以一个角色工作的 yaml 的图像。但如果列表提供给角色,我想重复资源
-
我注意到您几乎所有的问题都得到了回答,但只有两个答案被接受。接受有用的答案不仅是一种好习惯,而且可以减少重复并增加您的问题得到实际回答的机会。
标签: terraform snowflake-cloud-data-platform