mrkeyoor.com_
Tue 10 Nov 23:49 UTC
Automationevaluationupdated 26 Oct 2026

terraform review

Terraform is a source-available infrastructure-as-code CLI for describing, planning, and changing infrastructure. Its README describes versioned configuration, execution plans, and a resource graph that orders dependent changes. This repository contains Terraform core, including the CLI and graph engine; providers are separate plugins.

+42stars / 7d
Verdict

Terraform merits evaluation when versioned infrastructure configuration and reviewable plans fit your team's workflow. Check its license, required providers, and state arrangements before adoption. Our October 2, 2026 run at commit 0abcc9a recorded a successful build step and an unsuccessful Go test step, with 2 failed package results in the parser summary. The retained output does not identify those failures or verify an installed CLI, so it cannot establish production readiness or a product defect. Compare OpenTofu for its MPL 2.0 license and Pulumi for its programming-language approach.

We ran it

Lab card: what happened when we ran terraformScreenshot of terraform (developer.hashicorp.com/terraform)
Install✓ · 121s570 packages
Build✓ · 370s
Tests✗ · 487s182 passed · 2 failed of 184 (go test)
Repo5539 files~706,034 lines of source · 26.8 MB · 11 CI workflows · Dockerfile

Answers from our run

Does terraform build from source?

Dependencies installed in 121 seconds (570 packages), and the build succeeded in 370 seconds. We cloned commit 0abcc9a into a clean Debian container with 3 CPUs and no project-specific setup.

Do terraform's tests pass?

No. The project's own test command finished in 487 seconds and reported 182 passed, 2 failed (go test).

Who should not use terraform?

Organizations whose licensing requirements exclude BSL 1.1 before the applicable version's change date.

What are the alternatives to terraform?

OpenTofu, Pulumi. Terraform merits evaluation when versioned infrastructure configuration and reviewable plans fit your team's workflow.

Setup2/5The October 2, 2026 run at 0abcc9a completed setup and build steps, but the retained evidence does not verify an installed CLI or provider-backed workflow.
Docs3/5The supplied README, contribution guide, and state documentation explain core scope, development, testing, and state risks; comprehensive documentation quality was not evaluated.
Community2/5The sources document forums, contribution routes, and maintainer review practices. Adoption, support response times, and contributor health were not measured.
Maturity3/5State documentation, contribution practices, and v1.16.5 patch notes provide useful maintenance evidence. The recorded test command failed without retained failure diagnostics; production reliability was not tested.

Discussed on

  1. hnTerraform 1.0691 points
  2. hnTerraform is currently not reviewing community pull requests249 points
  3. hnTerraform 0.15 General Availability245 points
  4. hnOpenTerraform – an MPL fork of Terraform after HashiCorp's license change151 points
  5. hnThe future of Terraform CDK136 points

Who it’s for

Infrastructure teams that want to review proposed changes before applying them.
Teams prepared to manage state storage, access controls, provider credentials, and recovery.
Existing Terraform users evaluating core alongside their required providers and configurations.
Contributors who can investigate an unsuccessful baseline test command before changing code.

Who it’s NOT for

Organizations whose licensing requirements exclude BSL 1.1 before the applicable version's change date.
Vendors whose paid hosted or embedded offering falls within the license's competitive-offering restriction, unless they obtain appropriate commercial licensing.
Teams that cannot assign responsibility for state storage, access control, and recovery.
Buyers who need this review to establish provider compatibility or production reliability: our recorded run did not evaluate an infrastructure workload.

Setup reality

In our recorded run on October 2, 2026, at commit 0abcc9a9abb9519da53fb47422efec6f88dcf502, the step labeled install exited successfully after 121 seconds. The dependency summary recorded 570 packages, and the retained install output showed go: downloading go1.26.8 (linux/amd64). This establishes setup-step completion and a toolchain download, not an installed Terraform CLI check.

The harness marked the build step successful after 370 seconds; its retained output was vet-exit:0. The exact build command and an executable check are not supplied. The test step, identified as go test, exited 1 after 487 seconds. Its parser summary recorded 182 successful package results, 2 failed package results, and 56 package results without tests. These are package-result categories, not individual test counts or verified exhaustive coverage.

The configured sandbox had 3 CPUs, 8 GB of memory, and image golang:1.24-bookworm. That image label does not establish the toolchain used by every command. The retained output shows a Go 1.26.8 download, but no toolchain-version check. The 26.8 MB checkout contained 5,539 files and approximately 706,034 source lines. No provider-backed plan, apply, cloud deployment, or performance workload is recorded.

Review the workflow and the operating responsibilities

Terraform gives infrastructure teams a proposed change to review before applying it. The README describes configuration that can be versioned and reused, an execution plan showing proposed actions, and a resource graph that permits independent changes to run in parallel. Those are documented capabilities; our recorded run did not exercise them against infrastructure.

The decision also includes licensing, provider selection, and state ownership. Existing users should evaluate those requirements against their actual configurations. New adopters should settle them before treating a successful core setup step as evidence that their deployment workflow works.

What our recorded run establishes

Our stored run began on October 2, 2026, at 03:51:42.721 UTC, using commit 0abcc9a9abb9519da53fb47422efec6f88dcf502. This is an existing sandbox record, not a new execution or a test of release v1.16.5.

The step labeled install exited 0 after 121 seconds. The dependency summary recorded 570 packages. Its retained output was go: downloading go1.26.8 (linux/amd64). Completing that step does not establish that Terraform was installed or that its binary ran.

The harness marked the build step successful after 370 seconds, with exit 0 and retained output vet-exit:0. The supplied record does not include the exact command, a binary path, or an executable check. Reported build-step success therefore has a narrower meaning than a verified usable CLI.

The test step, identified as go test, exited 1 after 487 seconds. The parser recorded 182 successful package results and 2 failed package results, with a reported total of 184 for those two categories. It separately recorded 56 package results without tests. None of these figures is an individual-test count. Unique, exhaustive package coverage was not verified through complete-log reconciliation.

The retained tail contains successful package results, including internal/terraform, internal/tfdiags, tools/defect-detector, and version, followed by FAIL. It omits the failed package names and diagnostics. We cannot identify the cause, connect it to a reported upstream issue, or infer that Terraform itself is broken.

The configured environment had 3 CPUs, 8 GB of memory, and image golang:1.24-bookworm. The image name is not a runtime-version measurement. The download line records Go 1.26.8 being downloaded; it does not establish which toolchain every later command used. The checkout summary recorded 5,539 files, approximately 706,034 source lines, 26.8 MB, 11 CI workflow files, and a Dockerfile. The detector found no top-level tests directory, which says nothing about tests inside Go packages.

There is no recorded installed-binary check, provider-backed plan or apply, cloud deployment, security audit, or workload benchmark. These timings describe this sandbox's command steps, not infrastructure provisioning speed.

Core and providers need separate evaluation

The README says this repository contains the CLI and main graph engine. Providers are plugins, and Terraform can download those published on the Registry. The contribution guide also excludes HCP Terraform, Terraform Enterprise, and the Registry source from this repository.

A core result cannot establish whether a particular provider supports your resources or behaves correctly with your configuration. Identify the providers you need and evaluate a representative configuration in a disposable environment. For AWS-specific evaluation, the existing Terraform AWS Provider review addresses the provider rather than core. For pull-request execution, the existing Atlantis review addresses that separate workflow layer.

State needs an owner

HashiCorp's state documentation says Terraform stores bindings between remote objects and configured resource instances, then uses state to determine infrastructure changes. Local state needs no extra configuration, but the documentation warns that losing the file risks losing workspace state and that local storage limits collaboration.

For shared use, HashiCorp recommends HCP Terraform or a remote backend. It warns against storage without state locking and secure access control because of possible data loss or exposure of secrets in state. Decide who controls access, how state is backed up, and how recovery will work before applying shared infrastructure changes. These are operating recommendations, not controls verified by our run.

Read the license before choosing

The supplied license identifies Terraform Version 1.6.0 or later as the licensed work under Business Source License 1.1. Its additional use grant permits production use subject to restrictions on hosted or embedded competitive offerings. The definition covers paid offerings, including paid support arrangements, that significantly overlap IBM's paid versions. Internal organizational use, including affiliates under common control, is excluded from the competitive-offering definition.

The license lists a change date four years after publication of the licensed work and a change license of MPL 2.0. It applies separately to each version. Product vendors should check their intended offering against the actual terms rather than treating all commercial use as prohibited or all hosted use as permitted.

OpenTofu's supplied README lists MPL 2.0 and describes configuration, execution plans, and a resource graph. That makes it a relevant licensing and workflow comparison. The extract does not establish drop-in compatibility for an existing Terraform estate. Pulumi is relevant when language choice drives the decision: its README describes infrastructure programs using familiar language features. Neither alternative was run in this evaluation.

Release evidence is separate from the sandbox result

The supplied v1.16.5 release page shows a September 30, 2026 changelog heading and an October 2 publication entry. It lists two fixes: a crash involving tainted instance state without a valid status, and resource identity being nil during deletion. Those release notes do not diagnose the failures in our earlier October 2 sandbox run, and the recorded commit is not the release commit shown on that page.

The next useful step is to evaluate the exact Terraform version and providers you intend to deploy, using a representative configuration and an explicit state-recovery plan. Contributors should also capture complete baseline test output before attributing a failure to their changes.

How the ratings work

These are editorial evidence ratings, not benchmarks or adoption rankings. Each category uses a five-point scale: 1 means evidence is absent or shows a major unresolved obstacle; 2 means limited relevant evidence; 3 means useful evidence with substantial evaluation still needed; 4 means broad evidence with bounded gaps; 5 requires comprehensive evidence for the category. Missing evidence lowers confidence and the rating; it does not prove poor product quality.

Setup receives 2 because setup and build steps completed but CLI installation and an infrastructure workflow were not verified. Documentation receives 3 because the supplied README, contribution guide, and state page explain useful workflows and limitations, without establishing comprehensive documentation quality. Community receives 2 because contribution and support routes are documented, but adoption and response performance were not measured. Maturity receives 3 because the supplied sources document state handling, contribution practices, and a patch release, while operational reliability remains outside this run's scope.

Alternatives

ProjectWhat it isPick it when
OpenTofu gh↗An infrastructure-as-code tool whose README describes execution plans and a resource graph and lists the Mozilla Public License v2.0.Evaluate it when MPL 2.0 licensing and a configuration-and-plan workflow fit your requirements. The supplied evidence does not establish compatibility with your Terraform configuration.
Pulumi gh↗An infrastructure-as-code tool that provisions and manages resources using programming languages, including TypeScript, Python, Go, .NET, and Java.Evaluate it when you want to express infrastructure with programming-language features such as loops, functions, classes, and package management.

What people are saying

  1. [github-trending] hashicorp/terraform-provider-aws
  2. [github-trending] hashicorp/terraform

Sources

  1. Terraform README
  2. Terraform v1.16.5 release
  3. Terraform Business Source License
  4. Terraform contribution guide
  5. Terraform state documentation
  6. Terraform flaky test issue 39320
  7. Terraform flaky test issue 39317

More automation reviews

hummingbot · spotify-downloader · bbot · switch · Horizon · ai-goofish-monitor · the whole board →