BLOG | OFFICE OF THE CTO

F5 Friday: F5 Infrastructure as Code with Terraform

Lori MacVittie Thumbnail
Lori MacVittie
Published October 26, 2018

As we previously noted, "as code" is a significant movement across the networking industry that builds on core principles within the DevOps movement that favor treating everything possible "as code."

We also made an important distinction between "infrastructure as code" and "configuration as code", which is necessary in the world of networking because of the differences in how network and application services are traditionally delivered. Most network and application services are associated with hardware, but the truth is that there is a platform between the hardware and the services they deliver. That's the reason BIG-IP can be delivered as virtual machines in the cloud and on-premises as well as on our purpose-built hardware. Because BIG-IP is not the hardware, it's the software platform from which we deliver a variety of application services.

Now, just as it's true that the application platform - the web or app server or app engine - must be provisioned first, so too must the network and application service platforms be provisioned before they can be configured.

Increasingly - especially in cloud environments - that provisioning and configuration process is driven by systems like HashiCorp's Terraform.

If you aren't familiar with Terraform, let me quote from its own website:

Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions.

Configuration files describe to Terraform the components needed to run a single application or your entire datacenter. Terraform generates an execution plan describing what it will do to reach the desired state, and then executes it to build the described infrastructure. 

From <https://www.terraform.io/intro/index.html>

Basically, Terraform is a tool that drives the automated provisioning of infrastructure. It accomplishes the seemingly Sisyphean feat of provisioning an entire data center - or application architecture - through the use of plug-ins. Because it's nearly impossible to expect that Terraform itself can develop the integrations and extensions necessary to support the very robust ecosystem of infrastructure and application service providers. There's a lot of us, spanning security and scale, identity and access management, performance management and monitoring, and the list goes on. No single provider could hope to support each and every permutation of infrastructure that's possible given the market today. So in the spirit of extensibility, Terraform is enabled with a system that allows providers to "plug-in" support for their infrastructure and application services. 

That's means that we, as a provider of application services, can plug-in to Terraform and enable the BIG-IP platform to be treated "as code."

You can find more information about our Terraform provider on the Terraform site here, including examples of how to provision (and subsequently configure) your BIG-IP. There's also some great resources on our community - DevCentral - to help you get started Terraforming your BIG-IP.