将密钥保管库密钥传递给Data.tf并在Main.tf中进行引用的问题

时间:2020-07-24 11:09:47

标签: azure-keyvault terraform-provider-azure

我已经在Azure门户中创建了多个关键文件库机密,并尝试在terraform Data.tf中传递它们。但是我不确定如何传递多个秘密并在main.tf中进行引用。有人可以帮忙吗? 我的要求是在Name属性中传递多个值并在Main.tf中引用

data.tf

data "azurerm_key_vault" "key_vault" {
    name                = "test-key-vault-cts"
    resource_group_name = "gcdmvrlyprd03-30cf06a8"
}

data "azurerm_key_vault_secret" "admin_password" {
    name         = "admin-password"
    key_vault_id = data.azurerm_key_vault.key_vault.id
}

Main.tf

module "location_us-west" {
  source = "./Modules"

  web_server_location      = "westus2"
  web_server_rg            = "${var.web_server_rg}-us-west"
  resource_prefix          = "${var.resource_prefix}-us-west"
  web_server_address_space = "10.0.0.0/22"
  #web_server_address_prefix = "10.0.1.0/24"
  web_server_name  = var.web_server_name
  environment      = var.environment
  size             = var.vm_size
  admin_user       = var.user
  admin_password   = data.azurerm_key_vault_secret.admin_password.value
  web_server_count = var.web_server_count
  web_server_subnets = {
    "web-server"         = "10.0.1.0/24"
    "AzureBastionSubnet" = "10.0.2.0/24"
  }
}

2 个答案:

答案 0 :(得分:0)

如果要通过数据引用第二个机密,请创建第二个代码块。

data "azurerm_key_vault_secret" "admin_password2" {
    name         = "admin-password2"
    key_vault_id = data.azurerm_key_vault.key_vault.id
}

答案 1 :(得分:0)

我认为,您可以将数据源与模块location_us-west放在main.tf文件中。这样您就可以直接引用data.azurerm_key_vault_secret.admin_password.value。如果您只想引用机密而不进行任何其他操作,则不建议您从main.tf文件中删除数据源。

对于机密,您需要输入多个机密的名称,以从密钥库中获取它们。因此,如果您只想一次获得多个秘密,则可以像以下示例一样更改代码:

variable "secret_names" {
  type = list
  default = [
    "test1",
    "test2"
  ]
}

data "azurerm_key_vault" "example" {
  name = "key_vault_name"
  resource_group_name = "group_name"
}

data "azurerm_key_vault_secret" "example" {
  count = length(var.secret_names)
  name = element(var.secret_names, count.index)
  key_vault_id = data.azurerm_key_vault.example.id
}

然后输出data.azurerm_key_vault_secret.example.*.value将在列表中包含所有秘密值。