2015-08-19 by Axel Fontaine
One of the key elements of Immutable Infrastructure is the capability to efficiently create fully-provisioned images. These images must have all required software already on board. In fact, with everything fully configured and ready to run on boot, these images don't even need SSH.
On AWS, the typical process to achieve that can be described as follows:
You first create an AMI, based on which you can then launch any number of identical instances.
Boxfuse lets accomplish all this a single command, boxfuse run, that will effectively fuse your application artifact into an image, convert Boxfuse image to an AWS AMI and launch the number of instances you desire based on the newly created AMI.
Some of you however have already been practicing this for a long time with various combinations of open-source and in-house tools. You have asked us to provide you with a gradual migration process to adopt Boxfuse one piece at a time.
And that's why today we are introducing boxfuse convert to allow you to benefit from Boxfuse's incredibly fast AMI creation, while still relying on your current instance provisioning technology:
With boxfuse convert you can finally say goodbye to your old, slow and flaky AMI creation workflows. This is all you need to do to go from a JVM-based application (using Dropwizard in this example) to a fully-provisioned, secure, production-ready AMI:
> boxfuse convert dwunikernel-1.0.jar Fusing Image for dwunikernel-1.0.jar ... Image fused in 00:06.525s (55362 K) -> axelfontaine/dwunikernel:1.0 Pushing axelfontaine/dwunikernel:1.0 ... Verifying axelfontaine/dwunikernel:1.0 ... Waiting for AWS to create an AMI for axelfontaine/dwunikernel:1.0 in eu-central-1 (this may take up to 50 seconds) ... AMI created in 00:19.777s -> ami-e66264fb
And there you have it:
Your brand new fully-provisioned AMI has been created from scratch in less than 30 seconds!
It is tagged consistently with
boxfuse:image tags so you can retrieve it quickly and reliably.
You can immediately start launching instances based upon it from the AWS console or your orchestration tool of choice.
Packer is a great tool for building images for many platforms. It is not without its problems though. Besides the fact that Packer effectively builds an image per platform (instead of using the same image on all platforms), it is also incredibly slow when it comes to building AMIs. For comparison, try building the same type of AMI (HVM+EBS in this case) using Packer and Ubuntu 14.04 LTS. And don't forget to go and grab a coffee, as it will take a while. Compared to Packer's EBS backed AMI builder, Boxfuse is more than 10 times faster:
And that's not all. Boxfuse's AMIs are also more than 10 times smaller:
(In fact Boxfuse AMIs are even much smaller than that, but AWS's smallest EBS snapshot size is a full 1 GB)
And finally consider the effort required to write and maintain your Packer .json descriptors (don't forget to pin the version of every single package to avoid the issues of deferred provisioning) to create fully-provisioned hardened images that are ready to boot without manual tuning and with no SSH.
Now look at Boxfuse Convert's one-liner again and see for yourself just how easy things can be.
Boxfuse intelligently analyses your application and generates minimal images in seconds. There is no general purpose operating system and no tedious provisioning. Boxfuse images are lean, secure and efficient. You can run them on VirtualBox for development and deploy them unchanged and with zero downtime on AWS for test and production.
So if you haven't already, sign up for your Boxfuse account now. All you need is a GitHub account and you'll be up and running in no time. The Boxfuse free plan gives you 100 AMI builds per month. And if you wish to take things further it also aligns perfectly with the AWS free tier, so you can deploy your application to EC2 completely free.