github.com/kcburge/terraform@v0.11.12-beta1/website/docs/state/remote.html.md (about) 1 --- 2 layout: "docs" 3 page_title: "State: Remote Storage" 4 sidebar_current: "docs-state-remote" 5 description: |- 6 Terraform can store the state remotely, making it easier to version and work with in a team. 7 --- 8 9 # Remote State 10 11 By default, Terraform stores state locally in a file named `terraform.tfstate`. 12 When working with Terraform in a team, use of a local file makes Terraform 13 usage complicated because each user must make sure they always have the latest 14 state data before running Terraform and make sure that nobody else runs 15 Terraform at the same time. 16 17 With _remote_ state, Terraform writes the state data to a remote data store, 18 which can then be shared between all members of a team. Terraform supports 19 storing state in [Terraform Enterprise](https://www.hashicorp.com/products/terraform/), 20 [HashiCorp Consul](https://www.consul.io/), Amazon S3, and more. 21 22 Remote state is a feature of [backends](/docs/backends). Configuring and 23 using remote backends is easy and you can get started with remote state 24 quickly. If you then want to migrate back to using local state, backends make 25 that easy as well. 26 27 ## Delegation and Teamwork 28 29 Remote state gives you more than just easier version control and 30 safer storage. It also allows you to delegate the 31 [outputs](/docs/configuration/outputs.html) to other teams. This allows 32 your infrastructure to be more easily broken down into components that 33 multiple teams can access. 34 35 Put another way, remote state also allows teams to share infrastructure 36 resources in a read-only way without relying on any additional configuration 37 store. 38 39 For example, a core infrastructure team can handle building the core 40 machines, networking, etc. and can expose some information to other 41 teams to run their own infrastructure. As a more specific example with AWS: 42 you can expose things such as VPC IDs, subnets, NAT instance IDs, etc. through 43 remote state and have other Terraform states consume that. 44 45 For example usage, see 46 [the `terraform_remote_state` data source](/docs/providers/terraform/d/remote_state.html). 47 48 While remote state is a convenient, built-in mechanism for sharing data 49 between configurations, it is also possible to use more general stores to 50 pass settings both to other configurations and to other consumers. For example, 51 if your environment has [HashiCorp Consul](https://www.consul.io/) then you 52 can have one Terraform configuration that writes to Consul using 53 [`consul_key_prefix`](/docs/providers/consul/r/key_prefix.html) and then 54 another that consumes those values using 55 [the `consul_keys` data source](/docs/providers/consul/d/keys.html). 56 57 ## Locking and Teamwork 58 59 For fully-featured remote backends, Terraform can also use 60 [state locking](/docs/state/locking.html) to prevent concurrent runs of 61 Terraform against the same state. 62 63 [Terraform Enterprise by HashiCorp](https://www.hashicorp.com/products/terraform/) 64 is a commercial offering that supports an even stronger locking concept that 65 can also detect attempts to create a new plan when an existing plan is already 66 awaiting approval, by queuing Terraform operations in a central location. 67 This allows teams to more easily coordinate and communicate about changes to 68 infrastructure.