cloud-init service fails to start with the following error:
Starting Initial cloud-init job (pre-networking)... [ 32.938055] cloud-init[1141]: Cloud-init v. 22.1-453-g11d4c471-1~bddeb running 'init-local' at Thu, 26 Jun 2025 14:58:47 +0000. Up 32.91 seconds. [ 32.994128] cloud-init[1141]: 2025-06-26 14:58:47,775 - util.py[WARNING]: failed stage init-local [FAILED] Failed to start Initial cloud-init job (pre-networking). [ 33.037081] cloud-init[1141]: failed run of stage init-local [ 33.105051] cloud-init[1141]: ------------------------------------------------------------ [ 33.171060] cloud-init[1141]: Traceback (most recent call last): [ 33.231048] cloud-init[1141]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 761, in status_wrapper [ 33.231093] cloud-init[1141]: ret = functor(name, args) [ 33.336096] cloud-init[1141]: ^^^^^^^^^^^^^^^^^^^ [ 33.362072] cloud-init[1141]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 384, in main_init [ 33.412064] cloud-init[1141]: init.fetch(existing=existing) [ 33.469067] cloud-init[1141]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 432, in fetch [ 33.542065] cloud-init[1141]: return self._get_data_source(existing=existing) [ 33.614053] cloud-init[1141]: ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [ 33.647066] cloud-init[1141]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 319, in _get_data_source [ 33.699053] cloud-init[1141]: util.del_file(self.paths.instance_link) [ 33.734046] cloud-init[1141]: File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 1900, in del_file [ 33.781072] cloud-init[1141]: raise e [ 33.842054] cloud-init[1141]: File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 1897, in del_file [ 33.912062] cloud-init[1141]: os.unlink(path) [ 33.968123] cloud-init[1141]: IsADirectoryError: [Errno 21] Is a directory: '/opt/vyatta/etc/config/cloud/instance'
Seems like the problem is that encrypt_config uses copytree with default symlinks=False, so cloud/instance is copied as a directory instead of preserved as a symlink.
Before encryption enable:
vyos@VyOS-for-Smoke-Tests:~$ ls -la /opt/vyatta/etc/config/cloud/ total 32 drwxr-xr-x 8 root root 4096 Mar 5 02:22 . drwxr-xr-x 1 root root 4096 Mar 5 02:22 .. drwxr-xr-x 2 root root 4096 Mar 5 02:22 data drwxr-xr-x 2 root root 4096 Mar 5 02:22 handlers lrwxrwxrwx 1 root root 58 Mar 5 02:22 instance -> /opt/vyatta/etc/config/cloud/instances/i-087ddb4d24ac36170 drwxr-xr-x 3 root root 4096 Mar 5 02:22 instances drwxr-xr-x 6 root root 4096 Mar 5 02:22 scripts drwxr-xr-x 2 root root 4096 Mar 5 02:22 seed drwxr-xr-x 2 root root 4096 Mar 5 02:22 sem
After encryption enable:
vyos@VyOS-for-Smoke-Tests:~$ ls -la /opt/vyatta/etc/config/cloud/ total 36 drwxr-xr-x 9 root vyattacfg 4096 Mar 5 02:22 . drwxr-xr-x 10 root vyattacfg 4096 Mar 5 02:26 .. drwxr-xr-x 2 root vyattacfg 4096 Mar 5 02:26 data drwxr-xr-x 2 root vyattacfg 4096 Mar 5 02:22 handlers drwxr-xr-x 5 root vyattacfg 4096 Mar 5 02:26 instance drwxr-xr-x 3 root vyattacfg 4096 Mar 5 02:22 instances drwxr-xr-x 6 root vyattacfg 4096 Mar 5 02:22 scripts drwxr-xr-x 2 root vyattacfg 4096 Mar 5 02:22 seed drwxr-xr-x 2 root vyattacfg 4096 Mar 5 02:22 sem