Vsphere虚拟机在通过地形计数元数据进行配置时生成相同的IP



我想通过terraform在Vsphere中提供多个虚拟机。我使用count元数据来配置并行虚拟机,有时多个虚拟机会获得相同的IP地址。我尝试了多种方法来处理它,但没有成功。请帮助我了解如何处理这种情况。我不想使用静态IP。我正在使用DHCP。

当我顺序创建多个虚拟机时,虚拟机会获得正确的IP地址,但当我尝试使用计数元数据创建(尝试并行配置多个虚拟主机(时,它失败了。

resource "vsphere_virtual_machine" "vm" {
count = "3"
name = "${var.vm_name}-${count.index+1}"
resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
datastore_id     = data.vsphere_datastore.datastore.id
folder = "VirtualMachines"
guest_id = data.vsphere_virtual_machine.template.guest_id
scsi_type = data.vsphere_virtual_machine.template.scsi_type
wait_for_guest_net_timeout = 0

num_cpus             = var.cpu
num_cores_per_socket = var.cores-per-socket
memory               = var.ram
network_interface {
network_id   = data.vsphere_network.network.id
adapter_type = data.vsphere_virtual_machine.template.network_interface_types[0]
}

disk {
label            = "${var.vm_name}-${count.index+1}-disk"
thin_provisioned = data.vsphere_virtual_machine.template.disks.0.thin_provisioned
# eagerly_scrub    = data.vsphere_virtual_machine.template.disks.0.eagerly_scrub
size             = var.disksize == "" ? data.vsphere_virtual_machine.template.disks.0.size : var.disksize
}
clone {
template_uuid = data.vsphere_virtual_machine.template.id 
}
wait_for_guest_ip_timeout = 3
} 

文档说明如下[1](在该部分中搜索DHCP(:

若要使用DHCP,请为每个接口声明一个空的network_interface块。

因此,在您的情况下,这意味着将network_interface块更改为:

resource "vsphere_virtual_machine" "vm" {
...
network_interface {}
...
} 

此外,您正在使用wait_for_guest_net_timeoutwait_for_guest_ip_timeout的组合。文档中指出,对于较新版本的VMware Tools,您只需要前者。在设置超时时要小心,因为如果设置为小于1,则服务生将被禁用[2]。


[1]https://registry.terraform.io/providers/hashicorp/vsphere/latest/docs/resources/virtual_machine#virtual-机器定制

[2]https://registry.terraform.io/providers/hashicorp/vsphere/latest/docs/resources/virtual_machine#wait_for_guest_net_timeout

最新更新