Terraform is an Infrastructure-as-Code solution that is known for its wide range of providers and resources it supports.
It was created by HashiCorp, and is currently the most popular Infrastructure-as-Code solution.
Infrastructure-as-Code is a way for provisioning infrastructure by describing the state of the infrastructure you want to get as a program that can be interpreted and executed.
Having your infrastructure provisioned by code enables the following:
- Knowing the current state of your infrastructure at a glance
- Improving the existing infrastructure by writing code
- Performing system wide infrastructure changes
- Applying continuous integration principles for changing the infrastructure
- Provisioning entire systems and environments from scratch
- Tracking the state of the existing infrastructure and applying changes incrementally to it.
Terraform allows the creation of the widest range of resources.
Platforms and products wanting to enable their users to use Infrastructure-as-Code will most likely start by writing a Terraform provider to do that.
Many other Infrastructure-as-Code solutions either leverage Terraform's existing Codebase or rely on it entirely.
For you as an end-user, this means you will be able to adopt new technologies using Terraform before others using other Infrastructure-as-Code solutions.
On top of its wide range of resources and providers it supports, there is also an abundance of knowledge being shared, and tools being built around Terraform.
Our experience with Terraform have helped us build up knowledge and tools to help our clients.
Some of the things we did:
- Migrated existing infrastructure into Terraform
- Divided Terraform projects into smaller units for modularity and separation of concerns using Terragrunt
- Built a modules library to reduce code duplication and allow easier system-wide changes using Terragrunt
- Built continuous integration processes for Terraform projects
- Refactored Terraform projects to reduce duplication
- Used Terraform to make configuration the only difference between environments
- Deployed resources on Kubernetes using Terraform
All of the above experience helped us accumulate significant knowledge for many Terraform use-cases on various cloud providers, and allowed us to build useful resources for both new and experienced Terraform users.
- Build a detailed adoption plan and Roadmap for your infrastructure-as-code projects
- Migrate existing infrastructure into Terraform
- Structure the Terraform projects for your company’s needs
- Leverage Terrugrunt for adopting Terraform best-practices
- Review your existing Terraform code