Thanks for the logs. Could you be more specific about which files you mention are present in which path ? /var/lib/cloud/instance is a symlink that points to the current instance-id under /var/lib/cloud/instances. And in your case the log shows this: 2019-06-27 07:20:18,617 - util.py[DEBUG]: Creating symbolic link from '/var/lib/cloud/instance' => '/var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185' And then cloud-init logs all of the semephors it writes: % grep instances cloud-init.log 2019-06-27 07:20:18,617 - util.py[DEBUG]: Creating symbolic link from '/var/lib/cloud/instance' => '/var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185' 2019-06-27 07:20:18,618 - util.py[DEBUG]: Reading from /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/datasource (quiet=False) 2019-06-27 07:20:18,618 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/datasource - wb: [644] 75 bytes 2019-06-27 07:20:24,975 - util.py[DEBUG]: Creating symbolic link from '/var/lib/cloud/instance' => '/var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185' 2019-06-27 07:20:24,975 - util.py[DEBUG]: Reading from /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/datasource (quiet=False) 2019-06-27 07:20:24,976 - util.py[DEBUG]: Read 75 bytes from /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/datasource 2019-06-27 07:20:24,976 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/datasource - wb: [644] 75 bytes 2019-06-27 07:20:25,004 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/user-data.txt - wb: [600] 0 bytes 2019-06-27 07:20:25,021 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/user-data.txt.i - wb: [600] 308 bytes 2019-06-27 07:20:25,022 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/vendor-data.txt - wb: [600] 113 bytes 2019-06-27 07:20:25,024 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/vendor-data.txt.i - wb: [600] 418 bytes 2019-06-27 07:20:25,025 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/sem/consume_data - wb: [644] 24 bytes 2019-06-27 07:20:25,025 - helpers.py[DEBUG]: Running consume_data using lock () 2019-06-27 07:20:25,027 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/cloud-config.txt - wb: [600] 0 bytes 2019-06-27 07:20:25,030 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/vendor-cloud-config.txt - wb: [600] 159 bytes 2019-06-27 07:20:25,105 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/sem/config_seed_random - wb: [644] 24 bytes 2019-06-27 07:20:25,105 - helpers.py[DEBUG]: Running config-seed_random using lock () 2019-06-27 07:20:25,106 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/sem/config_write_files - wb: [644] 24 bytes 2019-06-27 07:20:25,106 - helpers.py[DEBUG]: Running config-write-files using lock () 2019-06-27 07:20:25,498 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/sem/config_disk_setup - wb: [644] 24 bytes 2019-06-27 07:20:25,498 - helpers.py[DEBUG]: Running config-disk_setup using lock () 2019-06-27 07:20:25,499 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/sem/config_mounts - wb: [644] 24 bytes 2019-06-27 07:20:25,499 - helpers.py[DEBUG]: Running config-mounts using lock () 2019-06-27 07:20:25,646 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/sem/config_set_hostname - wb: [644] 23 bytes 2019-06-27 07:20:25,646 - helpers.py[DEBUG]: Running config-set_hostname using lock () 2019-06-27 07:20:25,648 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/sem/config_ca_certs - wb: [644] 24 bytes 2019-06-27 07:20:25,649 - helpers.py[DEBUG]: Running config-ca-certs using lock () 2019-06-27 07:20:25,649 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/sem/config_rsyslog - wb: [644] 24 bytes 2019-06-27 07:20:25,649 - helpers.py[DEBUG]: Running config-rsyslog using lock () 2019-06-27 07:20:25,650 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/sem/config_users_groups - wb: [644] 22 bytes 2019-06-27 07:20:25,650 - helpers.py[DEBUG]: Running config-users-groups using lock () 2019-06-27 07:20:26,532 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/sem/config_ssh - wb: [644] 24 bytes 2019-06-27 07:20:26,532 - helpers.py[DEBUG]: Running config-ssh using lock () 2019-06-27 07:30:00,315 - util.py[DEBUG]: Creating symbolic link from '/var/lib/cloud/instance' => '/var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185' 2019-06-27 07:30:00,316 - util.py[DEBUG]: Reading from /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/datasource (quiet=False) 2019-06-27 07:30:00,321 - util.py[DEBUG]: Read 75 bytes from /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/datasource 2019-06-27 07:30:00,321 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/datasource - wb: [644] 75 bytes 2019-06-27 07:30:06,195 - util.py[DEBUG]: Creating symbolic link from '/var/lib/cloud/instance' => '/var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185' 2019-06-27 07:30:06,195 - util.py[DEBUG]: Reading from /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/datasource (quiet=False) 2019-06-27 07:30:06,195 - util.py[DEBUG]: Read 75 bytes from /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/datasource 2019-06-27 07:30:06,195 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/datasource - wb: [644] 75 bytes 2019-06-27 07:30:06,225 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/user-data.txt - wb: [600] 0 bytes 2019-06-27 07:30:06,240 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/user-data.txt.i - wb: [600] 308 bytes 2019-06-27 07:30:06,240 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/vendor-data.txt - wb: [600] 113 bytes 2019-06-27 07:30:06,242 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/vendor-data.txt.i - wb: [600] 418 bytes 2019-06-27 07:30:06,266 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/cloud-config.txt - wb: [600] 0 bytes 2019-06-27 07:30:06,269 - util.py[DEBUG]: Writing to /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185/vendor-cloud-config.txt - wb: [600] 159 bytes You should see config_* files in the instances/ dir and # ls -al /var/lib/cloud/instance lrwxrwxrwx 1 root root 27 May 13 05:39 /var/lib/cloud/instance -> /var/lib/cloud/instances/93471835-2d79-4c91-bed6-4a733a60a185 The journal seems to indicate that something else is going on outside of cloud-init itself. Cloud-init log clearly shows it executing all 4 stages (cloud-init local, cloud-init net, cloud-config modules, cloud-config final). But the status.json doesn't show the finished time, which makes me thing something in systemd or something else is blocking completion of the unit... Are you running an official image or have you modified it in some way?