For those of you who have not heard about it (even though, I'm guessing if you clicked in this link this may be because you already heard about Terraform...
Terraform is an open-source infrastructure as code (IaC) tool created by HashiCorp. It is used for building, changing, and versioning infrastructure efficiently. Terraform enables developers and operators to define infrastructure in a declarative configuration language and then deploy and manage that infrastructure across multiple cloud providers, on-premises data centers, and other service providers. Some of the key features and concepts associated with Terraform include:
- Declarative Configuration: Infrastructure is defined using a high-level configuration language (HashiCorp Configuration Language - HCL) where you specify what the infrastructure should look like, not the step-by-step instructions on how to create it.
- Providers: Terraform supports multiple providers, which are plugins that allow you to interact with various cloud and infrastructure services. Popular providers include AWS, Azure, Google Cloud, and many others.
- Resources: Resources are the building blocks of your infrastructure. They represent the various components of your infrastructure, such as virtual machines, databases, networks, and more.
- State Management: Terraform keeps track of the current state of your infrastructure in a state file. This file helps Terraform understand the differences between your desired configuration and the existing infrastructure.
- Plan and Apply: Terraform provides a "plan" step, where it shows you what changes it will make to your infrastructure before actually making them. This helps you understand the impact of your changes. You can then apply the plan to make the changes.
- Modularity: Terraform allows you to organize your infrastructure code into reusable modules, which can be shared and used in different projects.
- Version Control: Terraform configurations can be stored in version control systems like Git, enabling collaboration and history tracking.
- Community and Ecosystem: Terraform has a large and active community, and there are numerous third-party modules and extensions available to simplify infrastructure management.
Terraform is often used to automate the provisioning and management of cloud resources, making it easier to scale, replicate, and maintain infrastructure. It is a popular choice for DevOps and infrastructure teams looking to manage infrastructure efficiently and consistently.
I had been searching for some time and an online course to understand better what terraform is and how to use it in a modern every day use basis and I found this great course by DevOps Directive that I reccommend you all to take a look at if you are interested in learning how to properly dev-ops.
Regarding Infrastructure as code... in the dev-ops sense. I would say Terraform is like a CSS but for server management and configuration.