In my previous post I introduced the work that we are doing in HMRC to produce a standardised way of provisioning cloud infrastructure. This is part of our overall goal to move as much of our IT infrastructure to the cloud as possible, taking advantage of the scale, efficiency and cost-effectiveness that that move can offer.
In that post I outlined how we would be using open source tooling as the cornerstone of our work. There has been an explosion in the number and quality of open source tools in the infrastructure automation space over the past few years. Taking advantage of this tooling means that we can do a lot more, a lot more flexibly than we would have done previously.
One of the main tools that we are using is Terraform. This helps standardise infrastructure provisioning by providing a language for describing your infrastructure. Once you've defined what you want to build in a Terraform template you can then provision that same infrastructure over and over again at the press of a button. Terraform is also set up to work with a number of different infrastructure providers, which means once you've defined an infrastructure template that works with one provider it's not a huge number of steps to adapt that for use against a second one. This is really helpful when you are thinking about building resilient infrastructure across different suppliers or you want to take advantage of the different services or pricing that different providers offer.
Terraform has been really useful when working with suppliers that meet open standards, like Openstack based suppliers, and with big suppliers that lots of people use, but hasn't covered the wider range of suppliers that we use in HMRC. One of the key technologies it did not support is vCloud Director from VMware, used by a wide range of cloud infrastructure providers. However, Terraform is an open source project so if someone out in the world wants to contribute code that makes Terraform work with vCloud Director they can. And that's precisely what we've done. As part of the work we have been doing on cloud brokering we've written a Terraform provider for vCloud Director that has been accepted into the Terraform project and will form part of the next release!
This is hugely positive for the team, for HMRC and for the wider community who user vCloud Director based clouds. The team has acquired new skills (the provider was written in the Go programming language) and learnt more about how Terraform works under the hood. HMRC can now provision infrastructure in a consistent way against different clouds that we use, including vCloud Director-based ones, and reduce the inefficiency and error that can arise from having to maintain two sets of tooling to do the job of provisioning. Also, the wider community of vCloud Director users will now have the opportunity to use one of the more innovative approaches to provisioning with little overhead of their own.
All of this demonstrates the value of actively participating in the open source community and contributing back to improve the tooling that we all use.