我有一个 Vault 实例,我使用 Terraform 管理其中的策略和机密。在为新入职的团队创建批准身份验证、策略和策略文档时,有几个重复的步骤,因为每个团队都有他们工作的多个应用程序。我想模块化重复的部分(策略文档、策略创建和团队应用程序的批准),尽管每个应用程序的规则集略有不同。有没有办法以仅在布尔设置为 true 时才包含某些规则的方式创建策略文档?
例如:我有一个创建策略和策略文档的模块,如下所示:我将传递一个名为的 bool 变量enable_metadata_rule
,并根据它的值创建或不创建第二条规则:
resource "vault_policy" "example_policy" {
for_each = var.environments
provider = vault
name = "${var.team}-${var.application}-${each.key}"
policy = data.vault_policy_document.policy_document["${each.key}"].hcl
}
data "vault_policy_document" "policy_document" {
for_each = var.environments
rule {
path = "engines/${var.team}-kv/data/${each.key}/services/${var.application}/*"
capabilities = ["read", "list"]
description = "Read secrets for ${var.application}"
}
rule {
# IF enable_metadata_rule == true
path = "engines/${var.team}-kv/metadata/*"
capabilities = ["list"]
description = "List metadata for kv store"
}
}
如果没有这样的事情,是否有合并单独创建的策略文档的选项?