What Is Terraform?
Terraform is an open-source Infrastructure as Code tool created by HashiCorp, first released in 2014. It lets engineers define infrastructure — virtual machines, networks, DNS records, Kubernetes clusters, database instances, and much more — using a declarative configuration language called HCL (HashiCorp Configuration Language). Terraform's defining feature is that it is provider-agnostic: rather than being tied to a single cloud, it uses a plugin system of 'providers' to talk to virtually any API-driven platform, including AWS, Azure, Google Cloud, Kubernetes, GitHub, Datadog, and hundreds of others, all through the same workflow and language.
Cricket analogy: Terraform is like a universal umpire's rulebook created for the modern game — rather than each cricket board writing its own separate playing conditions, it uses a plugin system of 'formats' to govern Test, ODI, and T20 matches across any cricket board through the same rulebook.
The Core Workflow
Terraform's day-to-day usage revolves around three commands: terraform init, which downloads the providers and modules a configuration needs; terraform plan, which compares the desired configuration against the current real-world state and computes an execution plan (what will be created, updated, or destroyed); and terraform apply, which executes that plan against real infrastructure. This plan-then-apply separation is one of Terraform's most valued features — it lets engineers see exactly what will change before committing to the change.
Cricket analogy: Day-to-day preparation revolves around three steps: assembling the squad and kit (init), studying the opposition to forecast what changes are needed in the batting order (plan), and actually walking out to execute that batting order in the match (apply) — seeing the plan before committing to it.
State: Terraform's Memory
Unlike a script that runs once and forgets what it did, Terraform keeps a state file that records the real-world resources it manages and their current attributes. On every plan or apply, Terraform reads this state, compares it to both the configuration and the actual infrastructure (via provider APIs), and computes the minimal set of changes needed. This state file is what allows Terraform to know, for example, that a security group already exists and only its ingress rule needs updating, rather than trying to create it from scratch.
Cricket analogy: Unlike a one-off exhibition match that's forgotten afterward, a Test series keeps a running scorebook of every player's form and the pitch's behavior across days, so on day 5 the captain knows exactly which bowler is fresh without re-assessing everyone from scratch.
HashiCorp originally built Terraform to solve their own problem of managing multi-cloud infrastructure at Nomad and Consul scale. The name reflects the goal: 'terra' (earth/infrastructure) + 'form' (to shape) -- shaping infrastructure through code.
Ecosystem and Licensing
Terraform's registry hosts thousands of community and official providers and modules, making it one of the most widely adopted IaC tools in the industry. In 2023, HashiCorp changed Terraform's license from the open-source Mozilla Public License (MPL 2.0) to the Business Source License (BSL), which restricts certain competitive commercial uses while remaining free for the vast majority of users. In response, the OpenTofu project was forked from the last MPL-licensed version of Terraform to preserve a fully open-source alternative; the two remain highly compatible in syntax and workflow.
Cricket analogy: Cricket's global governing structure hosts thousands of registered players and franchises across boards, but when the IPL split from a shared broadcasting agreement over commercial terms, rival T20 leagues formed to preserve competitive, differently-governed cricket while staying compatible in rules.
Terraform's HCL and CLI compatibility with OpenTofu is currently high, but the two projects can diverge over time as each adds features independently. Teams choosing between them should check current compatibility rather than assuming permanent parity.
$ terraform version
Terraform v1.9.0
on linux_amd64
$ terraform init
Initializing the backend...
Initializing provider plugins...
- Finding hashicorp/aws versions matching "~> 5.0"...
- Installing hashicorp/aws v5.52.0...
Terraform has been successfully initialized!
$ terraform plan
Terraform will perform the following actions:
# aws_instance.web will be created
+ resource "aws_instance" "web" {
+ ami = "ami-0c55b159cbfafe1f0"
+ instance_type = "t3.micro"
}
Plan: 1 to add, 0 to change, 0 to destroy.- Terraform is HashiCorp's open-source, declarative IaC tool using the HCL language.
- It is provider-agnostic, supporting hundreds of platforms through a plugin architecture.
- The core workflow is init -> plan -> apply, with plan providing a preview before changes happen.
- Terraform tracks a state file that maps configuration to real-world resources.
- HashiCorp moved Terraform to the BSL license in 2023, prompting the OpenTofu open-source fork.
- Terraform's registry provides a large ecosystem of reusable providers and community modules.
Practice what you learned
1. Who created Terraform and what configuration language does it use?
2. What are the three core commands in Terraform's standard workflow, in order?
3. What is the purpose of Terraform's state file?
4. What licensing change prompted the creation of the OpenTofu project?
5. What makes Terraform 'provider-agnostic'?
Was this page helpful?
You May Also Like
What Is Infrastructure as Code?
Infrastructure as Code (IaC) is the practice of defining and provisioning computing infrastructure through machine-readable configuration files instead of manual processes.
terraform init, plan, and apply
The three-command core workflow of Terraform: init downloads dependencies, plan previews changes, and apply executes them -- forming a safe, repeatable provisioning cycle.
Providers Explained
Providers are Terraform plugins that translate HCL resource definitions into API calls against a specific platform, such as AWS, Azure, GCP, or Kubernetes.
The Terraform State File
Terraform's state file is the source of truth mapping your configuration to real-world resources. Understanding its structure and risks is essential for safe, collaborative infrastructure management.
Related Reading
Related Study Notes in DevOps
Browse all study notesNginx Study Notes
DevOps · 30 topics
DevOpsAnsible Study Notes
DevOps · 30 topics
DevOpsAdvanced Kubernetes Study Notes
Kubernetes · 30 topics
DevOpsAdvanced Bash Scripting Study Notes
Bash · 30 topics
DevOpsApache Kafka Study Notes
Kafka · 30 topics
DevOpsDocker & Kubernetes Study Notes
YAML · 40 topics