问题
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
回答1:
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.
来源:https://stackoverflow.com/questions/23819836/using-cloud-init-user-data