100% Free Forever
AI-Powered Learning
Industry Expert Content
Certificates & Badges
Learn At Your Own Pace
HCL

What Is Terraform?

Terraform is HashiCorp's open-source Infrastructure as Code tool that uses a declarative language, HCL, to provision and manage resources across hundreds of cloud and SaaS providers.

IaC FoundationsBeginner8 min readJul 9, 2026
Analogies

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.

bash
$ 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

Was this page helpful?

Topics covered

#HCL#TerraformInfrastructureAsCodeStudyNotes#DevOps#WhatIsTerraform#Terraform#Core#Workflow#State#StudyNotes#SkillVeris