I was testing (on the Azure 16.04 image) if we can leave the disk raw instead of partitioning and formatting it NTFS. It would shave some seconds off of the deployment time of VM's. I noticed that gfdisk has an extra line at the top when the disk is completely uninitialized, throwing off the get_gpt_hdd_size function. There's no open bug, but I thought I'd send a patch anyway, because this is a generic potential issue. I pasted the relevant log snippet below. As you can see, the hdd size is returned as 'GPT', which is the third word on the first line, instead of the number of sectors, which is supposed to be returned. Aug 26 17:49:39 ubuntu [CLOUDINIT] stages.py[DEBUG]: Running module disk_setup () with frequency once-per-instance Aug 26 17:49:39 ubuntu [CLOUDINIT] handlers.py[DEBUG]: start: modules-config/config-disk_setup: running config-disk_setup with frequency once-per-instance Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Writing to /var/lib/cloud/instances/2EE1991E-DADF-6D47-9683-E393AD393624/sem/config_disk_setup - wb: [420] 24 bytes Aug 26 17:49:39 ubuntu [CLOUDINIT] helpers.py[DEBUG]: Running config-disk_setup using lock () Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: updated disk_setup device entry 'ephemeral0' to '/dev/sdb' Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Partitioning disks: {'/dev/sdb': {'overwrite': True, 'layout': [100], 'table_type': 'gpt', '_origname': 'ephemeral0'}} Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Creating new partition table/disk Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking values for /dev/sdb definition Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking against default devices Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking if device /dev/sdb is a valid device Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Running command ['/bin/lsblk', '--pairs', '--output', 'NAME,TYPE,FSTYPE,LABEL', '/dev/sdb', '--nodeps'] with allowed return codes [0] (shell=False, capture=True) Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking if device layout matches Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Running command ['/sbin/sgdisk', '-p', '/dev/sdb'] with allowed return codes [0] (shell=False, capture=True) Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking if device is safe to partition Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Checking for device size Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Running command ['/sbin/sgdisk', '-p', '/dev/sdb'] with allowed return codes [0] (shell=False, capture=True) Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: Calculating partition layout Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Creating partition on /dev/sdb took 0.083 seconds Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[WARNING]: Failed partitioning operation#012could not convert string to float: 'GPT' Aug 26 17:49:39 ubuntu [CLOUDINIT] util.py[DEBUG]: Failed partitioning operation#012could not convert string to float: 'GPT'#012Traceback (most recent call last):#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_disk_setup.py", line 57, in handle#012 func=mkpart, args=(disk, definition))#012 File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 2060, in log_time#012 ret = func(*args, **kwargs)#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_disk_setup.py", line 692, in mkpart#012 part_definition = get_partition_layout(table_type, device_size, layout)#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_disk_setup.py", line 576, in get_partition_layout#012 return get_dyn_func("get_partition_%s_layout", table_type, size, layout)#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_disk_setup.py", line 338, in get_dyn_func#012 return globals()[func_name](*func_args)#012 File "/usr/lib/python3/dist-packages/cloudinit/config/cc_disk_setup.py", line 526, in get_partition_gpt_layout#012 part_size = int(float(size) * (float(percent) / 100))#012ValueError: could not convert string to float: 'GPT' Aug 26 17:49:39 ubuntu [CLOUDINIT] cc_disk_setup.py[DEBUG]: setting up filesystems: [{'device': 'ephemeral0.1', 'replace_fs': 'ntfs', 'filesystem': 'ext4'}]