// the find
hashicorp/terraform
Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
Terraform is the dominant IaC tool for provisioning cloud infrastructure via declarative HCL config files. It manages a dependency graph of resources across providers, runs a plan phase before applying changes, and tracks state in a state file. The target audience is anyone running multi-cloud or complex AWS/GCP/Azure infrastructure at a team level.
The plan/apply split is genuinely useful — you see exactly what will change before anything touches real infrastructure, and the diff output is readable enough that non-authors can review it in PRs. The provider ecosystem is enormous; if something has an API, there is almost certainly a maintained provider for it. The resource graph engine handles dependency resolution and parallel execution correctly, which matters when you have hundreds of resources. State importing has improved significantly in recent versions — you can now write import blocks in config rather than running imperative CLI commands.
The license changed to Business Source License 1.1 in 2023 — this is not open source, and the BSL restricts use in competing products. If you care about that, OpenTofu is the community fork that stayed on MPL. State file management is the perennial pain point: a single corrupted or out-of-sync state file can block your entire team, and state locking via DynamoDB/blob storage is required boilerplate that trips up new users. HCL's expression language is limited enough that complex logic gets genuinely ugly — you end up writing `for` expressions and `dynamic` blocks that would be three readable lines in any real language. Drift detection is passive — Terraform only notices drift when you run a plan, so long-lived infra that gets manually changed will silently diverge until someone remembers to check.