I have a simple cloud-init user data that I am passing in to ec2. I set this data on my ec2 instance by right clicking the instance and setting the user data in there.
Following is my cloud-init user data
#cloud-config
runcmd:
- [ ls, -l, / ]
- [ sh, -xc, "echo $(date) ': hello world!'" ]
- [ sh, -c, echo "=========hello world'=========" ]
- [ touch, /home/ec2-user/hello.txt ]
final_message: "The system is finally up, after 10 seconds"
I got this example from here and I added the touch command
My expectation was to see the data on the /var/log/cloud-init.log. But I don't see it there. Also I don't see any errors nor see the hello.txt file created
Is there something that I am missing?
I am running an amazon linux instance and not an ubuntu instance
User Data is a way to automatically provision your machine with additional software or settings. You can provide a set of commands (ie. a script) or enter cloud-config information as YAML. It is important to understand that the User Data provided will be used only when the machine is created.
So cloud-init will retrieve your user-data from an attached ISO image (from a file named user-data. txt ). When cloud-init runs, it will typically populate /var/lib/cloud-init/instance with any information retrieved from the cloud provider, so you should find a copy of the user data in that directory.
What's the difference between using the cfn-init the UserData script? Both approaches provide ways to bootstrap, configure, and install things on an EC2 Instance. A key difference between the two approaches is that UserData will replace the EC2 instance entirely, whereas cfn-init will do an in-place update.
Cloud-init is used to install packages, configure users and security, write files, and do other tasks you want automatically handled on the first or subsequential boots.
It's an syntax error in your 3rd command:
- [ sh, -c, echo "=========hello world'=========" ]
This is a working user-data:
#cloud-config
runcmd:
- [ ls, -l, / ]
- [ sh, -xc, 'echo $(date) ": hello world!"' ]
- [ sh, -c, 'echo "=========hello world========="' ]
- [ touch, /home/ec2-user/hello.txt ]
final_message: "The system is finally up"
output : { all : '| tee -a /var/log/cloud-init-output.log' }
Notice that it shows cloud-init execution log only in /var/log/cloud-init.log
. you should see output in /var/log/cloud-init-output.log
after specifying the output
directive.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With