ESXi 中未加载 cloud-init 用户数据/元数据

ESXi 中未加载 cloud-init 用户数据/元数据

我正在使用 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 VMwarecloud_id但只看到ovf

extra_config 内容的传递有效,vmware-rpctool 'info-get guestinfo.userdata'|base64 --decode产生了正确的内容 - 因此问题一定出在 cloud-init 的某个地方。

我如何告诉 cloud-init 强制仅使用VMware数据源?

相关内容