2020-10-27 02:15:36 +01:00
|
|
|
---
|
2021-12-15 03:41:17 +01:00
|
|
|
page_title: Backend Overview - Configuration Language
|
|
|
|
description: >-
|
|
|
|
A backend defines where Terraform stores its state. Learn about how backends
|
|
|
|
work.
|
2020-10-27 02:15:36 +01:00
|
|
|
---
|
|
|
|
|
|
|
|
# Backends
|
|
|
|
|
2021-12-15 03:41:17 +01:00
|
|
|
Backends define where Terraform's [state](/language/state) snapshots are stored.
|
2021-12-07 22:07:22 +01:00
|
|
|
|
|
|
|
A given Terraform configuration can either specify a backend,
|
2021-12-15 03:41:17 +01:00
|
|
|
[integrate with Terraform Cloud](/language/settings/terraform-cloud),
|
2021-12-07 22:07:22 +01:00
|
|
|
or do neither and default to storing state locally.
|
2020-10-27 02:15:36 +01:00
|
|
|
|
|
|
|
The rest of this page introduces the concept of backends; the other pages in
|
|
|
|
this section document how to configure and use backends.
|
|
|
|
|
2021-12-15 03:41:17 +01:00
|
|
|
- [Backend Configuration](/language/settings/backends/configuration) documents the form
|
2020-10-27 02:15:36 +01:00
|
|
|
of a `backend` block, which selects and configures a backend for a
|
|
|
|
Terraform configuration.
|
|
|
|
- This section also includes a page for each of Terraform's built-in backends,
|
|
|
|
documenting its behavior and available settings. See the navigation sidebar
|
|
|
|
for a complete list.
|
|
|
|
|
|
|
|
## What Backends Do
|
|
|
|
|
2021-12-15 03:41:17 +01:00
|
|
|
Backends primarily determine where Terraform stores its [state](/language/state).
|
|
|
|
Terraform uses this persisted [state](/language/state) data to keep track of the
|
2021-12-07 22:07:22 +01:00
|
|
|
resources it manages. Since it needs the state in order to know which real-world infrastructure
|
|
|
|
objects correspond to the resources in a configuration, everyone working with a given collection of
|
|
|
|
infrastructure resources must be able to access the same state data.
|
2020-10-27 02:15:36 +01:00
|
|
|
|
2021-12-07 22:07:22 +01:00
|
|
|
By default, Terraform implicitly uses a backend called
|
2021-12-15 03:41:17 +01:00
|
|
|
[`local`](/language/settings/backends/local) to store state as a local file on disk.
|
2021-12-07 22:07:22 +01:00
|
|
|
Every other backend stores state in a remote service of some kind, which allows multiple people to
|
|
|
|
access it. Accessing state in a remote service generally requires some kind of access credentials,
|
|
|
|
since state data contains extremely sensitive information.
|
2020-10-27 02:15:36 +01:00
|
|
|
|
|
|
|
Some backends act like plain "remote disks" for state files; others support
|
|
|
|
_locking_ the state while operations are being performed, which helps prevent
|
|
|
|
conflicts and inconsistencies.
|
|
|
|
|
2021-12-08 19:55:45 +01:00
|
|
|
-> **Note:** In Terraform versions prior to 1.1.0, backends were also classified as being 'standard'
|
2021-12-07 22:07:22 +01:00
|
|
|
or 'enhanced', where the latter term referred to the ability of the
|
2021-12-15 03:41:17 +01:00
|
|
|
[remote backend](/language/settings/backends/remote) to store state and perform
|
2021-12-07 22:07:22 +01:00
|
|
|
Terraform operations. This classification has been removed, clarifying the primary purpose of
|
2021-12-15 03:41:17 +01:00
|
|
|
backends. Refer to [Using Terraform Cloud](/cli/cloud) for details about how to
|
2021-12-07 22:07:22 +01:00
|
|
|
store state, execute remote operations, and use Terraform Cloud directly from Terraform.
|
2020-10-27 02:15:36 +01:00
|
|
|
|
2021-12-07 22:07:22 +01:00
|
|
|
## Available Backends
|
2020-10-27 02:15:36 +01:00
|
|
|
|
2021-12-07 22:07:22 +01:00
|
|
|
Terraform includes a built-in selection of backends, which are listed in the
|
|
|
|
navigation sidebar. This selection has changed over time, but does not change
|
|
|
|
very often.
|
2020-10-27 02:15:36 +01:00
|
|
|
|
2021-12-07 22:07:22 +01:00
|
|
|
The built-in backends are the only backends. You cannot load additional backends
|
|
|
|
as plugins.
|