2

I am trying to configure an user account using one cloud-init yaml file that include a call to write_files module, like this:

write_files:
#passwd file for vncserver
- path: /home/ubuntu/.vnc/passwd
  owner: ubuntu:ubuntu
  permissions: '0600'
  defer: true
  encoding: b64
  content: bmtzZGN1eQo=

The file is created as expected, but the problem is that the parent directory is owned by root, and not by ubuntu user.

$ ls -la .vnc/
total 12
drwxr-xr-x 2 root   root   4096 Dec 20 16:24 .
drwxr-x--- 5 ubuntu ubuntu 4096 Dec 20 16:24 ..
-rw------- 1 ubuntu ubuntu    8 Dec 20 16:24 passwd

I tried to manually create the /home/ubuntu/.vnc/ directory prior to create the passwd file to be able to set the ownership of the directory, just to find that documentation of write_files does not explain how to create (empty) directories.

I know that I could do this using runcmd module to insert a command like this:

runcmd:
  - mkdir --mode 0600 --parents /home/ubuntu/.vnc
  - echo bmtzZGN1eQo | base64 -d > /home/ubuntu/.vnc/passwd
  - chmod 0600 /home/ubuntu/.vnc/passwd

but this seems to be too complex to do such small task.

It is possible to use write_files module to create directories or change ownership/permission of existing directories?

Rockcat
  • 3,002
  • 2
  • 14
  • 28
  • 2
    `write_files` does not support creating an empty directory. I am also not aware any module that can create empty directory, _see_ https://cloudinit.readthedocs.io/en/latest/topics/modules.html. – aarongile Dec 20 '22 at 22:35

0 Answers0