Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using cloud-init user data

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

like image 362
Izaaz Yunus Avatar asked May 23 '14 01:05

Izaaz Yunus


People also ask

What is user data in cloud-init?

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.

Where does cloud-init look for user data?

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 is the difference between cloud-init and user data?

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.

What can you do with cloud-init?

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.


1 Answers

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.

like image 98
shawnzhu Avatar answered Oct 20 '22 10:10

shawnzhu