packer { required_plugins { vsphere = { source = "github.com/hashicorp/vsphere" version = "~> 1" } ansible = { source = "github.com/hashicorp/ansible" version = "~> 1" } } } build { source "vsphere-iso.ubuntu" { name = "bootstrap" vm_name = "bld_${var.vm_name}_bootstrap" } source "vsphere-iso.ubuntu" { name = "upgrade" vm_name = "bld_${var.vm_name}_upgrade" } provisioner "ansible" { pause_before = "45s" playbook_file = "ansible/playbook.yml" user = "ubuntu" ansible_env_vars = [ "ANSIBLE_CONFIG=ansible/ansible.cfg", "PYTHONUNBUFFERED=1" ] use_proxy = "false" collections_path = "ansible/collections" extra_arguments = [ "--extra-vars", "appliancetype=${source.name}", "--extra-vars", "applianceversion=${var.appliance_version}", "--extra-vars", "ansible_ssh_pass=${var.ssh_password}", "--extra-vars", "docker_username=${var.docker_username}", "--extra-vars", "docker_password=${var.docker_password}", "--extra-vars", "repo_username=${var.repo_username}", "--extra-vars", "repo_password=${var.repo_password}" ] } post-processor "shell-local" { inline = [ "pwsh -command \"& scripts/Update-OvfConfiguration.ps1 \\", " -ApplianceType '${source.name}' \\", " -OVFFile '/data/scratch/bld_${var.vm_name}_${source.name}.ovf' \"", "pwsh -file scripts/Update-Manifest.ps1 \\", " -ManifestFileName '/data/scratch/bld_${var.vm_name}_${source.name}.mf'", "ovftool --acceptAllEulas --allowExtraConfig --overwrite \\", " '/data/scratch/bld_${var.vm_name}_${source.name}.ovf' \\", " /output/airgapped-k8s-${var.appliance_version}+${var.k8s_version}-${source.name}.ova" ] } }