1

I have created an amazon ec2 instance image (AMI) that I want to use when launching new instances but I don't understand where to store my cloud-config.txt file so that it gets executed during the first boot.

I saw that you can pass that file using the user data field in the aws interface when launching a new instance, but I thought it might be easier to put the file inside of the AMI, so that it can get automatically used as is, without having me to paste the cloud-config into the user data field.

I found a cloud-config.txt file on my disc (in /var/lib/cloud/instance) but looks like this file got generated by cloud init on boot, so if I put something inside it will get overwritten on next boot anyway.

I also tried adding a config file inside of the /var/lib/cloud/scripts/per-instance directory but it seems that this file does not get executed on boot.

I also tried to add a file inside of /etc/cloud/cloud.cfg.d, but when I do that I have an error in the /var/log/cloud-init.log saying that a module failed.

Here is the yaml style config file content:

#cloud-config

runcmd:
 - cd /var
 - sudo mkdir www
 - cd www
 - groupadd www
 - [ sh, -c, "usermod -a -G www ec2-user" ]
 - [ sh, -c, "chown -R root:www /var/www" ]
 - chmod 2775 /var/www
 - npm install grunt-cli -g
 - bower install -g

final_message: "The system is finally up, after $UPTIME seconds"

# vim:syntax=yaml expandtab

What I was unable to find out is where to put this file so that cloud init uses it when I launch a new instance

chrisweb
  • 123
  • 6

1 Answers1

2

You don't place this on the instance. Rather you provide it as the user-data field when launching a new instance.

EEAA
  • 109,363
  • 18
  • 175
  • 245