我目前有一个工作脚本,可以使用 for_each 表达式针对变量映射在 Azure 中构建 Windows 服务器。目前,我正在使用一个变量作为 keyvault 密钥,但随后所有创建的虚拟机都会使用该变量。如何将不同的 keyvault 机密传递给我正在构建的每个虚拟机。
在我的模块中,我有以下内容。我通过 var.winserver.pw 传递 keyvault 机密的值。我已经创建了额外的 keyvault 机密,但不知道在使用变量映射时如何引用这些机密。有什么建议吗
resource "azurerm_windows_virtual_machine" "winservertest" {
for_each = var.vm_map
name = each.value.name
resource_group_name = var.m_resource_group_name
location = var.m_location
size = each.value.size
admin_username = var.m_admin_username
admin_password = var.winserver-test-pw
patch_mode = "Manual"
enable_automatic_updates = false
network_interface_ids = [
azurerm_network_interface.nic-multi-vms-01[each.key].id
]
您已经在使用网络进行操作了
vms-01[each.key]
就像我们可以将您的密码更改为地图并执行相同的操作 var.winserver-test-pw[each.key]
您的变量必须稍微更改以匹配与 vm_map
相同的键,仅此而已。 ..
这是我们可以使用随机宠物名进行测试的示例
variable "vm_map" {
default = {
"abc" = {}
"def" = {}
}
}
variable "vm_pw" {
default = {
"abc" = "aaa"
"def" = "ddd"
}
}
resource "random_pet" "test" {
for_each = var.vm_map
prefix = var.vm_pw[each.key]
}
output "test" {
value = random_pet.test
}
输出将是:
Outputs:
test = {
"abc" = {
"id" = "aaa-composed-bug"
"length" = 2
"prefix" = "aaa"
}
"def" = {
"id" = "ddd-sure-gar"
"length" = 2
"prefix" = "ddd"
}
}