我正在使用 Terraform 在 ESXi 环境中配置虚拟机。我通过手动导入 Ubuntu Focal Cloud Image 作为模板并从中克隆虚拟机来实现此目的,并使用由 vApp 属性和 extra_config 组合提供的参数:
vapp {
properties = {
"hostname" = "terraform-test"
# user ubuntu
"password" = "xxx"
"user-data" = base64encode(file("${path.module}/cloudinit/kickstart.yml"))
}
}
extra_config = {
"guestinfo.metadata" = base64encode(file("${path.module}/cloudinit/metadata.yml"))
"guestinfo.metadata.encoding" = "base64"
"guestinfo.userdata" = base64encode(file("${path.module}/cloudinit/userdata.yml"))
"guestinfo.userdata.encoding" = "base64"
}
不幸的是,cloud-init 不会应用 metadata/userdata.yml 中的任何内容。原因似乎是虽然sudo DI_LOG=stderr /usr/lib/cloud-init/ds-identify --force
产生Found 2 datasources found=all: OVF VMware
,cloud_id
但只看到ovf
。
extra_config 内容的传递有效,vmware-rpctool 'info-get guestinfo.userdata'|base64 --decode
产生了正确的内容 - 因此问题一定出在 cloud-init 的某个地方。
我如何告诉 cloud-init 强制仅使用VMware
数据源?