Terraform
Terraform enables you to define your infrastructure resources, such as virtual machines, networks,
storage, and more, in code. This helps in versioning, collaboration, and maintaining a consistent
infrastructure state.
You describe the desired state of your infrastructure using HashiCorp Configuration Language (HCL) or
JSON. Terraform will then take care of figuring out the necessary actions to reach that state
Terraform supports multiple cloud providers and infrastructure platforms, such as AWS, Azure, Google Cloud
Platform (GCP), VMware, and more. Each provider has its own set of resources and data sources that you can
manage using Terraform.
Resources are the building blocks of your infrastructure. They represent the actual components you want to
create or manage, like virtual machines, databases, security groups, etc.
Data sources allow you to fetch information from the providers without creating any resources. For
example, you can retrieve information about existing resources to use in your configurations.
Terraform maintains a state file that keeps track of the resources it creates and manages. This state file
is crucial for Terraform to understand what changes need to be applied to the infrastructure.
Before making any changes to the actual infrastructure, Terraform provides a "plan" phase where it shows
you what changes it intends to make. After reviewing the plan, you can execute the "apply" command to make
those changes.
Modules allow you to encapsulate and reuse parts of your infrastructure configuration. They help to create
reusable components and promote better organization of your codebase.