28 February 2013

Today I was fortunate enough to learn from Dr. Nic as he introduced his open source utility, bosh-boostrap, which makes shortwork of the chores of setting up and deploying BOSH and Cloud Foundry on AWS. Largely, the steps are reproduced and available on his tutorial which he's put online online.

BOSH is the orchestration manager for the underlying IaaS component - vSphere, Amazon Web Services or Open Stack.

BOSH in turn knows about releases, the makeup of some distributed systems, like Cloud Foundry. Cloud Foundry in turn has lots of moving parts and components, like PostgreSQL, and NATS - the Cloud Foundry message queue.

Since BOSH deploys its own packages of components like PostgreSQL, there is a lot of compiling. This process takes a few hours with Dr. Nic's excellent utility. Most of that, happily, is just wait time as you wait for things to compile and upload or download. If you weren't using the bosh-bootstrap utility, however, you'd spend a lot more time setting things up and configuring things. BOSH is very flexible, and overwhelming. bosh-bootstrap is opinionated, concise, and surfaces only the things it couldn't possibly devine by itself.

Anyway, feel free to ping Dr. Nic or me on Twitter if you have questions. It was really cool to see it all startup and then be able to deploy applications to it.

A few words of caution and advance notice:

You'll need an Amazon Web Services account. The utility will leave you with 5 very expensive nodes on Amazon Web Services as well as a lot of configured storage. You should stop the instances and storage or just outright delete them when you're done if you don't intend to keep it running.

Also, you'll need to have a domain you can point to this. During this process you'll be given an IP, and you'll need to create an A-name record (for *) in your DNS configuration for your hostname and point it to that IP.

I got the application presented here on this Pre Shaved Yak blog post up and running at starbuxman.org, and a colleague got it working on his private instance as well.