0 votes
1 view
in AWS by (19.2k points)

my user-data script


set -e -x

echo `whoami`

su root

yum update -y

touch ~/PLEASE_WORK.txt

which is fed in from the command:

ec2-run-instances ami-05355a6c -n 1 -g mongo-group -k mykey -f myscript.sh -t t1.micro -z us-east-1a

but when I check the file /var/log/cloud-init.log, the tail -n 5 is:

[CLOUDINIT] 2013-07-22 16:02:29,566 - cloud-init-cfg[INFO]: cloud-init-cfg ['runcmd']

[CLOUDINIT] 2013-07-22 16:02:29,583 - __init__.py[DEBUG]: restored from cache type DataSourceEc2

[CLOUDINIT] 2013-07-22 16:02:29,686 - cloud-init-cfg[DEBUG]: handling runcmd with freq=None and args=[]

[CLOUDINIT] 2013-07-22 16:02:33,691 - cloud-init-run-module[INFO]: cloud-init-run-module ['once-per-instance', 'user-scripts', 'execute', 'run-parts', '/var/lib/cloud/data/scripts']

[CLOUDINIT] 2013-07-22 16:02:33,699 - __init__.py[DEBUG]: restored from cache type DataSourceEc2

I've also verified that curl returns my file as intended.

and no other errors or the output of my script happens. how do I get the user-data script to execute on boot up correctly?

1 Answer

0 votes
by (119k points)

Actually, cloud-init allows a single shell script as an input (even if you may want to use a MIME archive for complex setups).

The problem with the OP's script is that the first line is wrong. You should use something like this:


Because, while cloud-init uses #! to recognize a user script, the OS requires a complete shebang line to execute the script.

So, what's happening in the OP's case is that cloud-init behaves correctly (i.e. it downloads and tries to run the script) but the OS could not actually execute it.

If you want to learn more, check out this AWS Training Course by Intellipaat.

Welcome to Intellipaat Community. Get your technical queries answered by top developers !