使用Terraform自定义客户操作系统-首次启动失败



我正在使用Terraform部署从AWS导出的vm。

流程如下:

  • 我使用Packer在AWS中构建AMI

  • ami然后通过terraform以vmdk格式导出到VMware(使用从s3 bucket克隆到数据存储)

  • 模板已创建,使用terraform重新使用模板创建虚拟机,模板没有挂载磁盘,在创建虚拟机时挂载磁盘。

虚拟机启动失败,报错如下:

不支持自定义guest操作系统,原因如下:GuestOS中未安装Tools。请安装最新版本的open-vm-tools或VMware Tools以启用GuestCustomization。

如果我删除虚拟机(不是删除磁盘,使用remove from inventory命令),并重新运行terraform apply命令,它启动虚拟机,它能够自定义没有任何问题。

resource "vsphere_virtual_machine" "vm" {
name             = "test_machine_vm_01"
resource_pool_id = data.vsphere_compute_cluster.cluster.resource_pool_id
datastore_id     = data.vsphere_datastore.datastore.id
folder           = "test"
num_cpus         = data.vsphere_virtual_machine.template.num_cpus
memory           = data.vsphere_virtual_machine.template.memory
guest_id         = "rhel7_64Guest"
scsi_type                               = data.vsphere_virtual_machine.template.scsi_type
tools_upgrade_policy                    = "upgradeAtPowerCycle"
run_tools_scripts_after_power_on        = true
run_tools_scripts_after_resume          = true
run_tools_scripts_before_guest_shutdown = true
run_tools_scripts_before_guest_standby  = true
network_interface {
network_id   = data.vsphere_network.network.id
adapter_type = data.vsphere_virtual_machine.template.network_interface_types[0]
}
disk {
attach       = true
path         = var.VMDK_PATH_DISK_1
label        = "disk.0"
datastore_id = data.vsphere_datastore.datastore.id
}
disk {
attach       = true
path         = var.VMDK_PATH_DISK_2
label        = "disk.1"
datastore_id = data.vsphere_datastore.datastore.id
unit_number  = 1
}
clone {
template_uuid = data.vsphere_virtual_machine.template.id
customize {
linux_options {
host_name = "rhel7-image"
domain    = "mipa.med.ds.osd.mil"
}
network_interface {
ipv4_address = "myip"
ipv4_netmask = 24
}
ipv4_gateway = "mygateway"
}
}
}

在我用packer创建的映像中,在关闭它之前,我使用以下命令作为root

systemctl enable vmtoolsd
systemctl start vmtoolsd
systemctl status vmtoolsd

如有任何帮助,不胜感激。

vmtoolsd不能在VMware外部初始化,即使修改了服务文件,移除了VMware条件。

使其工作的唯一方法是从AWS导出vmdk到vcenter,然后使用导出的磁盘启动VM,一旦它完全启动,它将自动检测vmtoolsd的存在,然后磁盘可以使用或克隆,并且将顺利启动。

最新更新