GPT formatted ephemeral disks have two partitions (unfortunately). The first is the Microsoft reserved partition (https://en.wikipedia.org/wiki/Microsoft_Reserved_Partition). This appears to be tripping up can_dev_be_reformatted().
Function address_ephemeral_resize() will first check if is_new_instance=True, and if so it will happily format the ephemeral disk. That's why this works at first boot. For subsequent boots where is_new_instance=False, address_ephemeral_resize() will call can_dev_be_reformatted(). This function sees that the ephemeral disk has two partitions and returns false: if os.path.exists(devpath + suff + "2"): msg = ('device %s had more than 1 partition: %s, %s' % devpath, cand, devpath + suff + "2") return False, msg We also end up with the following TypeError in the logs: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 647, in status_wrapper ret = functor(name, args) File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 415, in main_init init.activate_datasource() File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 369, in activate_datasource is_new_instance=self.is_new_instance()) File "/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceAzure.py", line 251, in activate address_ephemeral_resize(is_new_instance=is_new_instance) File "/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceAzure.py", line 329, in address_ephemeral_resize result, msg = can_dev_be_reformatted(devpath) File "/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceAzure.py", line 279, in can_dev_be_reformatted devpath, cand, devpath + suff + "2") TypeError: not enough arguments for format string . . Aside from the TypeError, even if we comment this part there is a later check to ensure that this partition is NTFS formatted (which it isn't). This will also return false and you will see the following error in the logs: "reformattable=False: partition 1 (/dev/disk/cloud/azure_resource-part1 -> /dev/sdb1) on device /dev/disk/cloud/azure_resource was not ntfs formatted" I think the correct behavior should be for cloud-init to detect that this is a GPT formatted ephemeral disk, or check that azure_resource- part1 is a "Microsoft reserved partition". And if so skip azure_resource-part1 and focus on azure_resource-part2 instead to determine if it is safe to reformat. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1686514 Title: Azure: cloud-init does not handle reformatting GPT partition ephemeral disks To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1686514/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs