我需要创建两个具有不同网卡的虚拟机。这是我的代码,但我有一个错误,我不知道为什么:
# Create network interface
resource "azurerm_network_interface" "my_nic" {
for_each = toset(var.nics)
name = each.key
location = "northeurope"
resource_group_name = "webapp"
ip_configuration {
name = "my_nic_configuration"
subnet_id = data.azurerm_subnet.my_subnet.id
private_ip_address_allocation = "Dynamic"
}
}
# Create VM
resource "azurerm_linux_virtual_machine" "my_vm" {
#count = 2 #update
for_each = toset(var.instances)
name = each.key
resource_group_name = var.resource_group_name
location = var.location
size = "Standard_F4s_v2"
network_interface_ids = [azurerm_network_interface.my_nic[each.key].id]
错误:
│ Error: Invalid index
│
│ on main.tf line 79, in resource "azurerm_linux_virtual_machine" "my_vm":
│ 79: network_interface_ids = [azurerm_network_interface.my_nic[each.key].id]
│ ├────────────────
│ │ azurerm_network_interface.my_nic is object with 2 attributes
│ │ each.key is "vm01, vm02"
│
│ The given key does not identify an element in this collection value.
您没有提供您收到的错误中的
var.instances
或 var.nics
的代码,我们可以假设变量中的键不匹配,您可以使用两个变量来做到这一点,但我建议只使用一个,请参阅下面的示例代码
variable "instances" {
type = any
default = {
"vm1" = {
"nic_name" = "abc"
}
"vm2" = {
"nic_name" = "def"
}
}
}
resource "azurerm_network_interface" "my_nic" {
for_each = var.instances
name = each.value.nic_name
location = "northeurope"
...
}
resource "azurerm_linux_virtual_machine" "my_vm" {
for_each = var.instances
name = each.key
...
network_interface_ids = [azurerm_network_interface.my_nic[each.value.nic_name].id]
}