Кто-нибудь успешно использовал образы облака terraform + extra_config + Ubuntu для взаимодействия с Cloud Init, предоставляя метаданные / данные пользователя? Я надеюсь, что это будет взаимодействовать с DataSourceVMware, но на данном этапе не могу быть уверенным.
Я использую Terraform для развертывания облачных образов Ubuntu на VMware vSphere 7. Использовать vApp Properties оказалось достаточно просто:
... below code snipped from resource "vsphere_virtual_machine" "vm" { }
vapp {
properties = {
hostname = var.vm_Name_Lower
instance-id = var.vm_Name_Lower
user-data = base64encode(file("${path.module}/userdata.yml"))
}
}
Но любая попытка использовать extra_config потерпела неудачу. Я хотел бы иметь возможность предоставлять как guestinfo.metadata, так и guestinfo.userdata.Но в настоящее время мои тесты с метаданными (см. Ниже) оказались неудачными, поскольку имя хоста не задано в виртуальной машине:
data "cloudinit_config" "metadata" {
gzip = true
base64_encode = true
part {
content_type = "text/cloud-config"
content = <<-EOF
local-hostname: testvm
instance-id: testvm
EOF
}
}
... below code snipped from resource "vsphere_virtual_machine" "vm" { }
extra_config = {
"guestinfo.metadata" = data.cloudinit_config.metadata.rendered
"guestinfo.metadata.encoding" = "gzip+base64"
}
Я вижу запись журнала vSphere, чтобы доказать, что extra_config был отправлен:
config.extraConfig("guestinfo.metadata"): (key = "guestinfo.metadata", value = "H4sIAAAAAAAA/2SOTUvGMBCE74H8h/De11dPQsSDHz14qIK ... snipped
Client system (on which terraform is run): Ubuntu 20.04.3 LTS
ESXi: 7.0.2 / Build: 18538813
vCenter Server: 7.0.2 / Build: 18455184
Cloud Image: https://cloud-images.ubuntu.com/impish/current/impish-server-cloudimg-amd64.ova
Terraform v1.0.7
on linux_amd64
provider registry.terraform.io/hashicorp/template v2.2.0
provider registry.terraform.io/hashicorp/vsphere v1.24.3