Если вы хотите создать набор vsphere_virtual_machine
ресурсов из списка IP-адресов и имен хостов, я мог бы попробовать это:
resource "vsphere_virtual_machine" "vm" {
count = "${length(var.virtual_machine_ips)}"
// the rest of your virtual machine config
// such as template ID, CPUs, memory, disks...
vapp {
properties {
// your vApp properties may vary based on what your template actually is.
// these examples are for the CoreOS template.
"guestinfo.hostname" = "${index(var.virtual_machine_hostnames, count.index)}"
"guestinfo.interface.0.ip.0.address" = "${index(var.virtual_machine_ips, count.index)}"
}
}
}
(Предполагается, что вы устанавливаете IP и имя хоста через vApp config ; если нет, то это может выглядеть аналогично, но поместите имя хоста и IP-адреса где-нибудь за пределами блока vsphere_virtual_machine.vapp.properties
.)
Где файл terraform.tfvars
может выглядеть так:
virtual_machine_ips = ["10.0.2.2", "10.0.2.3", "10.0.2.4"]
virtual_machine_hostnames = ["banana", "pineapple", "coconut"]
Это более простой и более идиоматический способ выполнения того, что вы пытаетесь сделать, поскольку работать со сложными объектами в синтаксисе интерполяции Terraform непросто.