As I mentioned in my Waffles year end review, I spent 2015 working on two major projects. Waffles was one project and Terraform was the other.
Terraform is an amazing tool. It can easily provision and connect resources across multiple clouds and providers. If you haven’t tried it, I highly encourage you to do so.
And if you use Terraform but haven’t dug into its internals, I encourage you to try that, too. Terraform’s code is very clean and easy to learn. It’s easy to add support for new resources: from virtual machines, to MySQL or PostgreSQL databases, to SSL certificates.
The number of resources that Terraform supports continues to grow. With new resources, new ways of using Terraform and interacting with resources are discovered. It’s going to be very interesting to see how Terraform evolves.
When Terraform was first releasted, I patiently waited for it to support OpenStack. Early in 2015, I got tired of waiting and began work on my own provider based off of the last known work. Coincidentally, two other parties began similar work. Rather than have a three-way duplication, everyone convened on a single code base. In the spring of 2015, the code was merged into Terraform proper and Terraform finally had native OpenStack support. Once merged, I continued to work on the OpenStack functionality: fixing bugs, adding features, and answering questions.
This type of project was very new to me. I’m a systems administrator by trade, so working on a large software project was something I wasn’t familiar with at all. I’m still not, but I think I’m getting the hang of it. It’s fun to play both sides, too: from a developer point of view, I have a much better appreciation for testing; from a sysadmin point of view, I’m mindful of making sure patches don’t cause backwards incompatibilities.
I plan to continue working on Terraform’s OpenStack support throughout 2016. I’d like to see more OpenStack projects added to Terraform (Trove, Designate, Glance) as well as other non-OpenStack projects (such as Cobbler).