我已经在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"
}
}
答案 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
将在列表中包含所有秘密值。