Improving OpsWorks Boot Times

Feb 25, 2015

The Problem

Initial setup of OpsWorks instances takes between 15 and 25 minutes depending on the complexity of your chef recipes.

Why?

The OpsWorks startup process injects a sequence of updates and package installations via the instance userdata before
setup can run. To make matters worse, the default Ubuntu 14.04 AMI provided by AWS (at the time of writing) over six
months old! YMMV but I experienced a 11 minute speedup simply in “time to running_setup” by introducing a simple
custom AMI.

Create an AMI based on your EC2 instance http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html

Use your AMI to boot instances in your stack

Can I make it even faster?

Sure! Do you have other packages that are common to your entire stack? For us it’s docker - and we can even preload
some base docker images if we want - for you it may be PHP, Node… Install current versions, then make your AMI.

Want to automate? Due to the simplicity, I haven’t gone there yet, but you could likey use aminator or even
a dedicated OpsWorks stack and cookbooks. If you go the OpsWorks route, don’t forget to delete the instance identity
data as specified in: http://docs.aws.amazon.com/opsworks/latest/userguide/workinginstances-custom-ami.html