bora—an AWS Cloudformation wrapper

Last weekend I spent some time working on a small project: bora.1 It’s a simple wrapper around AWS Cloudformation, so obviously everyone’s question is: why the hell would I want yet another Cloudformation wrapper? tl;dr answer is: because all the ones which are available suck. But let me elaborate.

With these requirements in mind, I began hacking, and I’m happy to say that bora, even though it’s in its earliest stages of development, fulfills all of them already.

Bora is written in Golang, which makes it fast, cross-platform, and portable. While you do need to setup a build environment for Golang if you want your jenkins job to build the tool (not sure why, but whatever), you only need to build it once per version. Other than that, all you need to do is put it some place your CI/CD can curl from, et voilà, you’re ready to run the binary. For pipelines that involve many Cloudformation runs, this saves a significant amount of time, and reduces run-time dependencies to a bare minimum.

Furthermore, bora takes YAML templates as input, but also accepts YAML meta-templates augmented with Golang’s text/template markup, which allows for setting variables and looping. It’s especially convenient when you need to deploy, say, multiple EC2 instances that differ in some details.

At this point bora is able to generate YAMLs, deploy, update and terminate stacks, and handle errors gracefully (you’d be surprised how few Cloudformation wrappers do this). Assuming roles for multi-account deployment is coming soon, along with other neat features. Stay tuned!

  1. Because winds, because clouds, because cloud formations…