Terraform - Infrastructure as Code
Find a file
Sarah French a2ad11c4f1
Some checks failed
build / Determine intended Terraform version (push) Has been cancelled
build / Determine Go toolchain version (push) Has been cancelled
Quick Checks / Unit Tests (push) Has been cancelled
Quick Checks / Race Tests (push) Has been cancelled
Quick Checks / End-to-end Tests (push) Has been cancelled
Quick Checks / Code Consistency Checks (push) Has been cancelled
Quick Checks / Automated defect checks (push) Has been cancelled
build / Generate release metadata (push) Has been cancelled
build / Build for freebsd_386 (push) Has been cancelled
build / Build for linux_386 (push) Has been cancelled
build / Build for openbsd_386 (push) Has been cancelled
build / Build for windows_386 (push) Has been cancelled
build / Build for darwin_amd64 (push) Has been cancelled
build / Build for freebsd_amd64 (push) Has been cancelled
build / Build for linux_amd64 (push) Has been cancelled
build / Build for openbsd_amd64 (push) Has been cancelled
build / Build for solaris_amd64 (push) Has been cancelled
build / Build for windows_amd64 (push) Has been cancelled
build / Build for freebsd_arm (push) Has been cancelled
build / Build for linux_arm (push) Has been cancelled
build / Build for darwin_arm64 (push) Has been cancelled
build / Build for linux_arm64 (push) Has been cancelled
build / Build for windows_arm64 (push) Has been cancelled
build / Build for linux_s390x (push) Has been cancelled
build / Build Docker image for linux_386 (push) Has been cancelled
build / Build Docker image for linux_amd64 (push) Has been cancelled
build / Build Docker image for linux_arm (push) Has been cancelled
build / Build Docker image for linux_arm64 (push) Has been cancelled
build / Build Docker image for linux_s390x (push) Has been cancelled
build / Build e2etest for linux_386 (push) Has been cancelled
build / Build e2etest for windows_386 (push) Has been cancelled
build / Build e2etest for darwin_amd64 (push) Has been cancelled
build / Build e2etest for linux_amd64 (push) Has been cancelled
build / Build e2etest for windows_amd64 (push) Has been cancelled
build / Build e2etest for linux_arm (push) Has been cancelled
build / Build e2etest for darwin_arm64 (push) Has been cancelled
build / Build e2etest for linux_arm64 (push) Has been cancelled
build / Run e2e test for linux_386 (push) Has been cancelled
build / Run e2e test for windows_386 (push) Has been cancelled
build / Run e2e test for darwin_amd64 (push) Has been cancelled
build / Run e2e test for linux_amd64 (push) Has been cancelled
build / Run e2e test for windows_amd64 (push) Has been cancelled
build / Run e2e test for linux_arm (push) Has been cancelled
build / Run e2e test for linux_arm64 (push) Has been cancelled
build / Run terraform-exec test for linux amd64 (push) Has been cancelled
fix: Make sure the backend state file is valid if a user introduces PSS to a pre-existing project via init -reconfigure.
The -reconfigure flag makes Terraform ignore the backend state file when deciding what scenario is happening, which leads to Terraform acting like it's initialising a working dir for the first time. However downstream code then needs to be prepared for both of these scenarios:
- The work dir has never been initialised before and the backend state file doesn't exist yet
- The work dir has been used before but Terraform is being forced to treat it as new.

This change helps with the second point - we need to remove any old descriptions of a Backend to avoid a situation where the backend state file describes both a backend and state_store.
2026-05-23 18:39:35 +01:00
.changes fix: Fix panic on deposed object with precondition and nop change 2026-05-22 14:30:17 -04:00
.github ci: Add (tfdiags.Diagnostics).Append checker to PR checks (#38606) 2026-05-19 10:32:10 +01:00
.release Add aliases for false positive CVE (#38332) 2026-04-01 12:51:38 +02:00
docs add computed_blocks_allowed 2026-03-27 09:06:30 -04:00
internal fix: Make sure the backend state file is valid if a user introduces PSS to a pre-existing project via init -reconfigure. 2026-05-23 18:39:35 +01:00
scripts ci: Add (tfdiags.Diagnostics).Append checker to PR checks (#38606) 2026-05-19 10:32:10 +01:00
testing/equivalence-tests make copyrightfix 2026-02-17 13:56:34 +00:00
tools Add policy client and protocol plumbing (#38514) 2026-05-21 13:25:15 +02:00
version Cleanup after 1.16.0-alpha20260513 release (#38570) 2026-05-15 13:59:33 +01:00
website website: (Re)Move markdown documentation (#37417) 2025-08-11 11:25:18 +02:00
.changie.yaml Prepare main branch for post-v1.15 development (#38287) 2026-03-18 13:20:21 +00:00
.copywrite.hcl copywrite: Set copyright_year to 2014 2026-02-17 13:56:34 +00:00
.git-blame-ignore-revs Add .git-blame-ignore-revs with copyright header commits 2026-02-17 15:18:28 +00:00
.gitignore test: create all edges to leaf cleanup nodes (#37564) 2025-09-09 11:20:56 +02:00
.go-version update go version 2026-05-11 15:27:42 +02:00
.tfdev Remove revision from version command 2021-01-12 16:35:30 -05:00
BUGPROCESS.md Update BUGPROCESS.md 2023-03-18 17:14:20 -04:00
build.Dockerfile make copyrightfix 2026-02-17 13:56:34 +00:00
BUILDING.md elaborate further on experiments and cgo 2023-07-17 11:56:13 -07:00
catalog-info.yaml make copyrightfix 2026-02-17 13:56:34 +00:00
CHANGELOG.md Cleanup after 1.16.0-alpha20260513 release (#38570) 2026-05-15 13:59:33 +01:00
checkpoint.go make copyrightfix 2026-02-17 13:56:34 +00:00
CODEOWNERS Update CODEOWNERS for action invocation paths 2026-03-11 13:38:41 -04:00
commands.go command: Implement skeleton for state migrate (#38435) 2026-04-27 16:39:02 +01:00
Dockerfile make copyrightfix 2026-02-17 13:56:34 +00:00
experiments.go make copyrightfix 2026-02-17 13:56:34 +00:00
go.mod chore: bump go-tfe dep to v1.105.0 2026-05-12 09:13:26 +02:00
go.sum chore: bump go-tfe dep to v1.105.0 2026-05-12 09:13:26 +02:00
help.go make copyrightfix 2026-02-17 13:56:34 +00:00
LICENSE Update LICENSE punctuation and wording 2026-03-17 17:46:03 +05:30
main.go make copyrightfix 2026-02-17 13:56:34 +00:00
main_test.go make copyrightfix 2026-02-17 13:56:34 +00:00
Makefile ci: Add (tfdiags.Diagnostics).Append checker to PR checks (#38606) 2026-05-19 10:32:10 +01:00
provider_source.go make copyrightfix 2026-02-17 13:56:34 +00:00
README.md website: (Re)Move markdown documentation (#37417) 2025-08-11 11:25:18 +02:00
signal_unix.go make copyrightfix 2026-02-17 13:56:34 +00:00
signal_windows.go make copyrightfix 2026-02-17 13:56:34 +00:00
staticcheck.conf chore: Bump golang.org/x/crypto dependency, ignore SA4003 linting errors globally (#37901) 2025-11-17 15:01:28 +00:00
telemetry.go make copyrightfix 2026-02-17 13:56:34 +00:00
version.go make copyrightfix 2026-02-17 13:56:34 +00:00
working_dir.go make copyrightfix 2026-02-17 13:56:34 +00:00

Terraform

Terraform

Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions.

The key features of Terraform are:

  • Infrastructure as Code: Infrastructure is described using a high-level configuration syntax. This allows a blueprint of your datacenter to be versioned and treated as you would any other code. Additionally, infrastructure can be shared and re-used.

  • Execution Plans: Terraform has a "planning" step where it generates an execution plan. The execution plan shows what Terraform will do when you call apply. This lets you avoid any surprises when Terraform manipulates infrastructure.

  • Resource Graph: Terraform builds a graph of all your resources, and parallelizes the creation and modification of any non-dependent resources. Because of this, Terraform builds infrastructure as efficiently as possible, and operators get insight into dependencies in their infrastructure.

  • Change Automation: Complex changesets can be applied to your infrastructure with minimal human interaction. With the previously mentioned execution plan and resource graph, you know exactly what Terraform will change and in what order, avoiding many possible human errors.

For more information, refer to the What is Terraform? page on the Terraform website.

Getting Started & Documentation

Documentation is available on the Terraform website:

If you're new to Terraform and want to get started creating infrastructure, please check out our Getting Started guides on HashiCorp's learning platform. There are also additional guides to continue your learning.

Show off your Terraform knowledge by passing a certification exam. Visit the certification page for information about exams and find study materials on HashiCorp's learning platform.

Developing Terraform

This repository contains only Terraform core, which includes the command line interface and the main graph engine. Providers are implemented as plugins, and Terraform can automatically download providers that are published on the Terraform Registry. HashiCorp develops some providers, and others are developed by other organizations. For more information, refer to Plugin development.

License

Business Source License 1.1