Terraform
Infrastructure as code for cloud and on-premises resources.
Terraform reads declarative HashiCorp Configuration Language (HCL) files describing infrastructure (compute, networks, DNS records, IAM policies, Kubernetes resources, and much more) and reconciles cloud providers to match. Each "terraform apply" plans a diff between the current state (stored in a backend like S3 or Terraform Cloud) and the desired state, then applies the differences in dependency order.
Providers — typically a Go binary per cloud or service — handle the actual API calls. The Terraform Registry hosts thousands of providers covering AWS, Azure, GCP, Kubernetes, GitHub, DNS providers, monitoring services, and even Spotify playlists. Modules let users package reusable infrastructure patterns.
Mitchell Hashimoto and Armon Dadgar started Terraform at HashiCorp in 2014. The licence shifted from MPL-2.0 to BSL-1.1 in 2023, which prompted the Linux Foundation OpenTofu fork that continues under the original MPL licence. Both projects share a substantial code lineage and remain compatible at the configuration level. Terraform/OpenTofu is the dominant general- purpose IaC tool in the industry.
Install
Debian/Ubuntu: see https://developer.hashicorp.com/terraform/install Fedora/RHEL: sudo dnf install terraform Arch: sudo pacman -S terraform macOS: brew install terraform
Authors
- HashiCorp
- Terraform contributors