Folosesc Terraform pentru a furniza mașini virtuale într-un mediu ESXi. Fac acest lucru importând o dată manual Ubuntu Focal Cloud Image ca șablon și clonând mașinile virtuale din ea, cu parametrii furnizați de o combinație de proprietăți vApp și extra_config:
vapp {
proprietăți = {
"hostname" = "terraform-test"
# utilizator ubuntu
"parolă" = "xxx"
"user-data" = base64encode(fișier ("${path.module}/cloudinit/kickstart.yml"))
}
}
extra_config = {
"guestinfo.metadata" = base64encode(fișier ("${path.module}/cloudinit/metadata.yml"))
"guestinfo.metadata.encoding" = "base64"
"guestinfo.userdata" = base64encode(fișier ("${path.module}/cloudinit/userdata.yml"))
"guestinfo.userdata.encoding" = "base64"
}
Din păcate, cloud-init nu aplică nimic din metadata/userdata.yml. Motivul pare să fie acel timp sudo DI_LOG=stderr /usr/lib/cloud-init/ds-identify --force
randamente S-au găsit 2 surse de date=toate: OVF VMware
, cloud_id
doar vede ovf
.
Trecerea extra_config funcționează, vmware-rpctool 'info-get guestinfo.userdata'|base64 --decode
produce conținutul corect - prin urmare problema trebuie să fie undeva în cloud-init.
Cum îi spun cloud-init să forțeze utilizarea exclusivă a VMware
sursă de date?