如何将不同的 keyvault 机密传递给使用 for_each 表达式构建的每个虚拟机

问题描述 投票:0回答:1

我目前有一个工作脚本,可以使用 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
  ]
terraform azure-keyvault
1个回答
0
投票

您已经在使用网络进行操作了

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"
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.