From 199f94e9ba000896e37754835a98583bc4b952ae Mon Sep 17 00:00:00 2001 From: Mischa Taylor Date: Fri, 29 Sep 2023 11:29:19 -0400 Subject: [PATCH] Block until cloud-init is finished --- ubuntu/aarch64/ubuntu.pkr.hcl | 10 ++++++++++ ubuntu/x86_64/ubuntu.pkr.hcl | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/ubuntu/aarch64/ubuntu.pkr.hcl b/ubuntu/aarch64/ubuntu.pkr.hcl index 484f2ea..ac9175a 100644 --- a/ubuntu/aarch64/ubuntu.pkr.hcl +++ b/ubuntu/aarch64/ubuntu.pkr.hcl @@ -30,6 +30,16 @@ EOF build { sources = ["sources.file.user_data", "sources.file.meta_data"] + # cloud-init may still be running when we start executing scripts + # To avoid race conditions, make sure cloud-init is done first + provisioner "shell" { + inline = [ + "echo '==> Waiting for cloud-init to finish'", + "/usr/bin/cloud-init status --wait", + "echo '==> Cloud-init complete'", + ] + } + provisioner "shell-local" { inline = ["genisoimage -output cidata.iso -input-charset utf-8 -volid cidata -joliet -r user-data meta-data"] } diff --git a/ubuntu/x86_64/ubuntu.pkr.hcl b/ubuntu/x86_64/ubuntu.pkr.hcl index 8639f36..52e2f4f 100644 --- a/ubuntu/x86_64/ubuntu.pkr.hcl +++ b/ubuntu/x86_64/ubuntu.pkr.hcl @@ -88,6 +88,16 @@ source "qemu" "ubuntu" { build { sources = ["source.qemu.ubuntu"] + # cloud-init may still be running when we start executing scripts + # To avoid race conditions, make sure cloud-init is done first + provisioner "shell" { + inline = [ + "echo '==> Waiting for cloud-init to finish'", + "/usr/bin/cloud-init status --wait", + "echo '==> Cloud-init complete'", + ] + } + provisioner "shell" { execute_command = "echo '${var.ssh_password}' | {{ .Vars }} sudo -S -E sh -eux '{{ .Path }}'" expect_disconnect = true