website: Adopt `terraform_remote_state` into language docs
...and also shrink the explanation for alternate sharing approaches, a bit.
Actually, it looks like I already half-adopted it by accident. 😬 But this
commit adds it to the sidebar under "State", so users can browse to it. I'm
leaving the URL alone, because it's not urgent and we'll need to adjust a large
swath of URLs at some point anyway.
This change effectively stops presenting `terraform` as a provider in the normal
sense, and reduces /docs/providers/terraform/index.html to a ghost page in the
language section (to avoid breaking links for the time being). The message a
reader should get is that Terraform has one special built-in data source where
you don't need to think about the provider or its version.
This commit is contained in:
parent
e9748574b9
commit
5ceb8b2b98
|
@ -1,31 +1,37 @@
|
||||||
---
|
---
|
||||||
layout: "language"
|
layout: "language"
|
||||||
page_title: "Terraform: terraform_remote_state"
|
page_title: "The terraform_remote_state Data Source"
|
||||||
sidebar_current: "docs-terraform-datasource-remote-state"
|
sidebar_current: "docs-terraform-datasource-remote-state"
|
||||||
description: |-
|
description: |-
|
||||||
Retrieves the root module output values from a Terraform state snapshot stored in a remote backend.
|
Retrieves the root module output values from a Terraform state snapshot stored in a remote backend.
|
||||||
---
|
---
|
||||||
|
|
||||||
# terraform_remote_state
|
# The `terraform_remote_state` Data Source
|
||||||
|
|
||||||
[backends]: /docs/backends/index.html
|
[backends]: /docs/backends/index.html
|
||||||
|
|
||||||
The `terraform_remote_state` data source retrieves the root module output
|
The `terraform_remote_state` data source retrieves the root module output values
|
||||||
values saved as part of the latest state snapshot from the remote backend for
|
from some other Terraform configuration, using the latest state snapshot from
|
||||||
some other Terraform configuration.
|
the remote backend.
|
||||||
|
|
||||||
This can be a convenient way to make use of data already generated by another
|
This data source is built into Terraform, and is always available; you do not
|
||||||
Terraform configuration without publishing it explicitly elsewhere, but it's
|
need to require or configure a provider in order to use it.
|
||||||
important to note that output values are only a small part of a Terraform
|
|
||||||
state snapshot. Although `terraform_remote_state` only exposes the output
|
|
||||||
values, any user of this data source must have full access to the other aspects
|
|
||||||
of the state snapshot, which may be considered sensitive information.
|
|
||||||
|
|
||||||
Rather than directly sharing state snapshots between your configurations, we
|
-> **Note:** This data source is implemented by a built-in provider, whose
|
||||||
recommend explicitly publishing data for external consumption to a separate
|
[source address](/docs/configuration/provider-requirements.html#source-addresses)
|
||||||
location than to the producing configuration's remote state backend.
|
is `terraform.io/builtin/terraform`. That provider does not include any other
|
||||||
The shared information will then be separated from the internal details in the
|
resources or data sources.
|
||||||
state snapshots, and so you can apply different access controls to each.
|
|
||||||
|
## Alternative Ways to Share Data Between Configurations
|
||||||
|
|
||||||
|
Sharing data with root module outputs is convenient, but it has drawbacks.
|
||||||
|
Although `terraform_remote_state` only exposes output values, its user must have
|
||||||
|
access to the entire state snapshot, which often includes some sensitive
|
||||||
|
information.
|
||||||
|
|
||||||
|
When possible, we recommend explicitly publishing data for external consumption
|
||||||
|
to a separate location instead of accessing it via remote state. This lets you
|
||||||
|
apply different access controls for shared information and state snapshots.
|
||||||
|
|
||||||
To share data explicitly between configurations, you can use pairs of managed
|
To share data explicitly between configurations, you can use pairs of managed
|
||||||
resource types and data sources in various providers, including (but not
|
resource types and data sources in various providers, including (but not
|
||||||
|
|
|
@ -3,40 +3,20 @@ layout: "language"
|
||||||
page_title: "Provider: Terraform"
|
page_title: "Provider: Terraform"
|
||||||
sidebar_current: "docs-terraform-index"
|
sidebar_current: "docs-terraform-index"
|
||||||
description: |-
|
description: |-
|
||||||
The Terraform provider is used to access meta data from shared infrastructure.
|
The special `terraform_remote_state` data source is used to access outputs from shared infrastructure.
|
||||||
---
|
---
|
||||||
|
|
||||||
# Terraform Provider
|
# The Built-In `terraform` Provider
|
||||||
|
|
||||||
The terraform provider provides access to outputs from the Terraform state
|
Terraform includes one built-in data source:
|
||||||
of shared infrastructure.
|
[`terraform_remote_state`](/docs/providers/terraform/d/remote_state.html), which
|
||||||
|
provides access to root module outputs from some other Terraform configuration.
|
||||||
|
|
||||||
Use the navigation to the left to read about the available data sources.
|
This data source is implemented by a built-in provider, whose
|
||||||
|
[source address](/docs/configuration/provider-requirements.html#source-addresses)
|
||||||
|
is `terraform.io/builtin/terraform`. You do not need to require or configure
|
||||||
|
this provider in order to use the `terraform_remote_state` data source; it is
|
||||||
|
always available.
|
||||||
|
|
||||||
## Example Usage
|
The `terraform_remote_state` data source is
|
||||||
|
[documented in the Terraform Language docs](/docs/providers/terraform/d/remote_state.html).
|
||||||
```hcl
|
|
||||||
# Shared infrastructure state stored in Atlas
|
|
||||||
data "terraform_remote_state" "vpc" {
|
|
||||||
backend = "remote"
|
|
||||||
|
|
||||||
config = {
|
|
||||||
organization = "hashicorp"
|
|
||||||
workspaces = {
|
|
||||||
name = "vpc-prod"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Terraform >= 0.12
|
|
||||||
resource "aws_instance" "foo" {
|
|
||||||
# ...
|
|
||||||
subnet_id = data.terraform_remote_state.vpc.outputs.subnet_id
|
|
||||||
}
|
|
||||||
|
|
||||||
# Terraform <= 0.11
|
|
||||||
resource "aws_instance" "foo" {
|
|
||||||
# ...
|
|
||||||
subnet_id = "${data.terraform_remote_state.vpc.subnet_id}"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
|
@ -920,6 +920,10 @@
|
||||||
<a href="/docs/state/purpose.html">Purpose</a>
|
<a href="/docs/state/purpose.html">Purpose</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li>
|
||||||
|
<a href="/docs/providers/terraform/d/remote_state.html">The <code>terraform_remote_state</code> Data Source</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li>
|
<li>
|
||||||
<a href="/docs/backends/state.html">Backends: State Storage & Locking</a>
|
<a href="/docs/backends/state.html">Backends: State Storage & Locking</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
<% wrap_layout :inner do %>
|
|
||||||
<% content_for :sidebar do %>
|
|
||||||
<div class="docs-sidebar hidden-print affix-top" role="complementary">
|
|
||||||
<ul class="nav docs-sidenav">
|
|
||||||
<li<%= sidebar_current("docs-home") %>>
|
|
||||||
<a href="/docs/providers/index.html">All Providers</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li<%= sidebar_current("docs-terraform-index") %>>
|
|
||||||
<a href="/docs/providers/terraform/index.html">Terraform Provider</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li<%= sidebar_current("docs-terraform-datasource") %>>
|
|
||||||
<a href="#">Data Sources</a>
|
|
||||||
<ul class="nav nav-visible">
|
|
||||||
<li<%= sidebar_current("docs-terraform-datasource-remote-state") %>>
|
|
||||||
<a href="/docs/providers/terraform/d/remote_state.html">terraform_remote_state</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<%= yield %>
|
|
||||||
<% end %>
|
|
Loading…
Reference in New Issue