首页 > 解决方案 > 如何使用多个密钥库并使用循环?地形

问题描述

我有 5 个密钥库和 5 个秘密问题是不希望我的 terraform 文件有 10 个这样的数据块:

data "azurerm_key_vault" "kv1" {
  name                = "mykeyvault"
  resource_group_name = "myrg"
}

data "azurerm_key_vault_secret" "kv1" {
  name         = var.secret_name
  key_vault_id = var..key_vault_id
}
data "azurerm_key_vault" "kv2" {
  name                = "mykeyvault"
  resource_group_name = "myrg"
}

data "azurerm_key_vault_secret" "kv2" {
  name         = var.secret_name
  key_vault_id = var..key_vault_id
}
data "azurerm_key_vault" "kv3" {
  name                = "mykeyvault"
  resource_group_name = "myrg"
}

data "azurerm_key_vault_secret" "kv3" {
  name         = var.secret_name
  key_vault_id = var..key_vault_id
}
data "azurerm_key_vault" "kv4" {
  name                = "mykeyvault"
  resource_group_name = "myrg"
}

data "azurerm_key_vault_secret" "kv4" {
  name         = var.secret_name
  key_vault_id = var..key_vault_id
}
data "azurerm_key_vault" "kv5" {
  name                = "mykeyvault"
  resource_group_name = "myrg"
}

data "azurerm_key_vault_secret" "kv5" {
  name         = var.secret_name
  key_vault_id = var..key_vault_id
}
.....

我可以在一个块中使用任何其他方法来分配 5 个 keyvaults 数据块和 5 个秘密数据块吗?

谢谢

标签: azureterraformdevops

解决方案


根据您的要求,您最好使用for_each来获取不同 Key Vault 中的不同机密,这是一个示例:

variable "secrets" {
  type = map(string)
  default = {
    "keyvault1" = "secret1"
    "keyvault2" = "secret2"
  }
}

data "azurerm_key_vault" "kv" {
  for_each = var.secrets
  name = each.key
  resource_group_name = var.resource_group
}

data "azurerm_key_vault_secret" "secret" {
  for_each = var.secrets
  name = each.value
  key_vault_id = data.azurerm_key_vault.kv[each.key].id
}

推荐阅读