Terraform is an open-source Infrastructure as Code (IaC) tool developed by HashiCorp. It allows you to define, provision, and manage cloud infrastructure using a simple, declarative language. Whether you're deploying resources on AWS, Azure, Google Cloud, or even on-premises, Terraform provides a unified workflow to automate and version your infrastructure.
# main.tf
provider "aws" {
region = "us-west-2"
}
resource "aws_instance" "example" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
This simple configuration launches an EC2 instance on AWS. You can apply it with:
terraform init
terraform apply
terraform plan
to review changes before applying them.Keyword | Description |
---|---|
provider |
Specifies the provider (e.g., AWS, Azure, GCP) to interact with cloud APIs. |
resource |
Defines a piece of infrastructure to be managed (e.g., server, database). |
variable |
Declares input variables to parameterize configurations. |
output |
Defines values to be displayed after applying a configuration. |
module |
Groups resources and logic for reuse across configurations. |
data |
Fetches read-only information from providers for use elsewhere in the configuration. |
locals |
Defines local variables within a module for intermediate values. |
terraform |
Configures settings for the Terraform project itself (e.g., backend, required providers). |
Command | Description | Usage |
---|---|---|
terraform init |
Initializes a Terraform working directory, downloads providers and modules. | terraform init |
terraform plan |
Creates an execution plan showing what Terraform will do when applied. | terraform plan |
terraform apply |
Applies the changes required to reach the desired state of the configuration. | terraform apply |
terraform destroy |
Destroys all resources managed by Terraform. | terraform destroy |
terraform validate |
Validates the syntax and internal consistency of Terraform files. | terraform validate |
terraform fmt |
Rewrites Terraform configuration files to a canonical format and style. | terraform fmt |
terraform show |
Shows the current state or a saved plan. | terraform show |
terraform state |
Advanced state management operations. | terraform state list terraform state show |
terraform output |
Shows the values of output variables. | terraform output |
terraform import |
Imports existing infrastructure into Terraform state. | terraform import aws_instance.example i-12345678 |
terraform workspace |
Manages workspaces for isolating state files. | terraform workspace new dev terraform workspace select prod |
terraform taint |
Marks a resource for recreation on next apply (deprecated in favor of -replace). | terraform taint aws_instance.example |
terraform refresh |
Updates the state file to match the real-world infrastructure (deprecated). | terraform refresh |
terraform force-unlock |
Manually unlocks the state file when Terraform operations are interrupted and leave the state locked. | terraform force-unlock LOCK_ID |
Terraform empowers teams to manage infrastructure efficiently, safely, and at scale. By adopting Infrastructure as Code, you can automate deployments, reduce errors, and enable rapid innovation. Whether you're a beginner or an experienced DevOps engineer, Terraform is a valuable tool to add to your toolkit.