I'm using cloud-init to setup AWS EC2 machines running Ubuntu 14.04. One of the more useful features of cloud-init is the write_files module that allows me to install additional files during the initialization of the virtual machine.

write_files has several useful functions, among them is setting the owner of the file, as documented here. Unfortunately, it appears that I can't use this feature of write_files in Ubuntu 14.04 to set the file owner to any non-system account, because the cloud-init module that adds users - "users groups" is being run after the write_files section. If I set file owner to a user that is added in the users section (or in my case the default users), even if I do this by uid, I get errors such as this:

StandardError:('write-files', OSError("Unknown user or group: 'getpwnam(): name not found: ubuntu'",))

This seems coded into /etc/cloud/cloud.cfg, which has this section:

 - migrator
 - seed_random
 - bootcmd
 - write-files
 - growpart
 - resizefs
 - set_hostname
 - update_hostname
 - update_etc_hosts
 - ca-certs
 - rsyslog
 - users-groups
 - ssh

I've seen a few examples on the internet that set cloud_init_modules in the cloud-init user data, but if I add such a section and order it so write-files is under users-groups, it doesn't seem to have any effect.

Aside from giving up on write_files and implementing a runcmd based workaround as documented in question #605670 is there anything else that can be done?


I hit the same bug #1231541. As I had the problem in OpenStack, I used packer to rebuild the image and change the order of the cloud-init modules. Afterwards everything worked as expected.

  • 1
    Updating images by hand is always an option, and always a bad option :-) I prefer to work directly with upstream whenever possible – Guss Nov 28 '16 at 17:41

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.