New updates have been released for all of the Ubuntu AMIs listed on:
Though this release is only 3 days after the previous one it is surprisingly not to fix bugs, but rather to add one of the most demanded features: startup hooks.
Thanks to code submitted by Kim Scheibel and Jorge Oliveira (with a little mangling from me) it is now easy to type a single command (or push a button in Elasticfox) and have an Ubuntu instance start up and immediately install, configure, and run software without any additional manual intervention.
Simply pass a script (starting with
#!) as the instance user-data and
it will be run automatically on the first boot. If you want it to be
run on every boot, see the comments at the top of this file:
For example, to start a Hardy LAMP server, you could create a script named “install-lamp-server” with the contents:
#!/bin/bash export DEBIAN_PRIORITY=critical apt-get update apt-get upgrade -y apt-get install -y lamp-server^ echo "Please remember to set the MySQL root password!"
Then using the latest Ubuntu 8.04 Hardy base install AMIID (from https://alestic.com) run a command like:
ec2-run-instances \ --user-data-file install-lamp-server \ --key IDENTITY \ AMIID
A couple minutes later, you should be able to connect to the server’s external hostname with a web browser. To see the progress of your user-data script on the instance:
tail -f /var/log/syslog
Output from the user-data script is also available in the EC2 instance console output for convenient remote debugging.
You can write the user-data script in any language that happens to be
on the base AMI (bash, perl, python, ruby, awk, …) as long as the
program file starts with:
Note that there is a size limit on user-data in EC2, but the user-data script may download additional files from S3 or other locations, so this shouldn’t be too constraining.
Now let the competition begin for coolest and most useful instance user-data scripts!