New Amazon EC2 Feature: Boot from Elastic Block Store
aws.typepad.com
aws.typepad.com
One of the key benefits of EC2 and other cloud offerings is that, in a properly automated environment, it is faster and easier to replace a faulty node than to troubleshoot it. The same is true for upgrades - simply boot a new instance from an updated AMI or Chef/Puppet/Cfengine/RightScale config and point traffic at the new server. Minimal wheelspin, minimal downtime.
Those who use this new feature to take a, for lack of a better term, "server-hugger" approach to cloud computing will miss out on this. Though it may reduce their cloud onboarding time, it's inefficient in the long term and will be an operational burden as the environment grows.
1. Long boot times. This gets worse as your recipes get beefier.
2. Same script, different results. Running your recipe next year might not yield the same result (e.g. if you don't specify a precise version of a package to install).
2. I think it's always important to be explicit about, and have backups, of the packages used in these scripts.
2. You can version server templates to use specific revisions of RightScripts and recipes. In fact, the Chef implementation is built around using a branch or commit SHA1 to specify what versions of the recipes you want to use from your repository.
disclaimer: I work for RightScale
Increasingly, it seems that the man-years we've collectively invested in EC2's bizarre APIs were entirely for their own development convenience, rather than actually being their best practice. The complexity of AMIs vs the simplicity of cloning disk images - there's little practical difference other than the latter is obviously simpler and more powerful. And the latter has existed for 15 years, if not a lot longer.
* Boot a 4MB busybox ami (very fast to load)
* init script loops trying to mount /dev/sdj
* Manually attach EBS root volume on /dev/sdj
* init script mounts /dev/sdj in /new-root
* pivot_root /new-root /old-root
* chroot /new-root /sbin/init
In fact, maintain state between stops/starts increases headaches for me. It's a lot more tempting to incorporate manual voodoo instead of baking it into the build process.
i can see a lot of advantages in terms of boot time and having a much bigger root but for us since boot time is negligable compared to puppet config time, the biggest saving will come the next time we're doing the the whole configure/test/ec2-bundle-vol/ec2-upload-bundle/ec2-register cycle, which is so tedious.
I'll use this in the future, and I will convert my own permanent EC2 instance. There is a bit of trickery that I had to learn to auto mount EBS volumes when my AMIs start up - some Ruby scripting code I probably won't have to use anymore.