There are tons of options for IAC these days: ARM templates in Azure, CloudFormation in AWS, Puppet, Chef, Ansible, SaltStack, all with their own set of pros and cons.
This article covers one of HMB’s favorite Infrastructure as Code (IAC) tools: Terraform!
What Terraform brings to the table is something different than just configuration management. Terraform brings deployment consistency across many platforms!
Hashicorp Configuration Language
Terraform uses Hashicorp Configuration Language (HCL) for it’s configuration files. One of the primary benefits of HCL compared with JSON-based IAC tools is that your API calls will be more readable.
Compare this JSON ARM template to HCL code:
As you can see, the HCL code is much easier for human users to quickly comprehend.
Terraform Manages State
Terraform does more than just provide a human-readable configuration language… it manages the state of resources it’s deployed to!
This should not be confused with configuration management. It does not measure configuration drift at the OS level of an AWS EC2 instance. However, it will manage the size of AWS instances you have deployed.
So, if you need to scale up, scale down, or entirely delete a virtual server, Terraform provides the tooling flexibility to manage that lifecycle.
This capability extends to:
- Serverless resources
- VPN Gateways
- Or, anything that can be programmatically deployed, and has a provider available…
“Providers are what Terraform uses to understand API interactions and expose resources.
Providers include but are not limited to…
- Public clouds (AWS, Azure, more)
- Cloud-based tools such as CloudFlare
- DNS providers
- On-premises virtualization and networking (VMWare products, Cisco, etc.)
The list is growing constantly. A full list of providers can be found here: https://www.terraform.io/docs/providers/index.html
How Terraform Helps DevOps Adoption
Tying it all together, Terraform helps DevOps adoption by:
- Providing an easy-to-understand configuration language
- Manage resource states
- Administering a wide range of platforms
And, getting the Terraform’s DevOps tools into operations and developers’ hands does not have many barriers.
There are paid cloud and enterprise offerings, but the tool has an open-source offering as well that only requires a download and installation.
The providers are extensively documented and the HCL code required is available on their website for free.
DevOps is not new, but many organizations have still not fully realized the benefits that come with solid DevOps practices.
Consistency is important when deploying infrastructure to cut down on mistakes and speed deployments.
No matter where you are in terms of cloud adoption it has many providers that allow for configuration across many different parts of your infrastructure.
If your organization is looking for an easy to learn fun, and useful IAC tool HMB recommends Terraform.
Interested in learning more about how best practices for setting up Terraform at your organization? Email firstname.lastname@example.org to setup a strategy session with our in-house IAC and Terraform experts.