仅在条件为真时创建策略文档规则 - Terraform Vault
Only create policy document rule on condition true - Terraform Vault
我有一个 Vault 实例,我使用 Terraform 管理其中的策略和机密。在为新入职的团队创建 approle 身份验证、策略和策略文档时,有几个重复的步骤,因为每个团队都有他们处理的多个应用程序。我想模块化重复的部分(团队应用程序的策略文档、策略创建和批准),尽管每个应用程序的规则集略有不同。
有没有一种方法可以创建仅在 bool 设置为 true 时才包含某些规则的策略文档?
例如:
我有一个创建政策和政策文件的模块,如下所示:
我会传递一个名为 enable_metadata_rule
的 bool 变量,并根据它的值创建第二条规则:
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"
}
}
如果没有这样的东西,是否有合并单独创建的保单文件的选项?
你应该可以使用 dynamic blocks:
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}"
}
dynamic "rule" {
for_each = var.enable_metadata_rule == true ? [1]: []
content {
path = "engines/${var.team}-kv/metadata/*"
capabilities = ["list"]
description = "List metadata for kv store"
}
}
}
我有一个 Vault 实例,我使用 Terraform 管理其中的策略和机密。在为新入职的团队创建 approle 身份验证、策略和策略文档时,有几个重复的步骤,因为每个团队都有他们处理的多个应用程序。我想模块化重复的部分(团队应用程序的策略文档、策略创建和批准),尽管每个应用程序的规则集略有不同。 有没有一种方法可以创建仅在 bool 设置为 true 时才包含某些规则的策略文档?
例如:
我有一个创建政策和政策文件的模块,如下所示:
我会传递一个名为 enable_metadata_rule
的 bool 变量,并根据它的值创建第二条规则:
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"
}
}
如果没有这样的东西,是否有合并单独创建的保单文件的选项?
你应该可以使用 dynamic blocks:
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}"
}
dynamic "rule" {
for_each = var.enable_metadata_rule == true ? [1]: []
content {
path = "engines/${var.team}-kv/metadata/*"
capabilities = ["list"]
description = "List metadata for kv store"
}
}
}