website: Expand output values docs (#20790)

For 0.11 I just specified the naming rules; for 0.12, I added some info about
referencing values and tightened up the layout of the optional arguments.

This commit also syncs up descriptions of `depends_on`.
This commit is contained in:
Nick Fagerlund 2019-03-22 15:08:55 -07:00 committed by GitHub
parent 53cff99f84
commit 428a2c05e7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 17 deletions

View File

@ -53,8 +53,8 @@ output "addresses" {
The `output` block configures a single output variable. Multiple
output variables can be configured with multiple output blocks.
The `NAME` given to the output block is the name used to reference
the output variable. It must conform to Terraform variable naming
conventions if it is to be used as an input to other modules.
the output variable, and can include letters, numbers, underscores (`_`),
and hyphens (`-`).
Within the block (the `{ }`) is configuration for the output.
These are the parameters that can be set:

View File

@ -41,9 +41,10 @@ output "instance_ip_addr" {
}
```
The label immediately after the `output` keyword is the name that can be used
to access this output in the parent module, if any, or the name that will be
displayed to the user for output values in the root module.
The label immediately after the `output` keyword is the name, which must be a
valid [identifier](./syntax.html#identifiers). In a root module, this name is
displayed to the user; in a child module, it can be used to access the output's
value.
The `value` argument takes an [expression](./expressions.html)
whose result is to be returned to the user. In this example, the expression
@ -51,10 +52,18 @@ refers to the `private_ip` attribute exposed by an `aws_instance` resource
defined elsewhere in this module (not shown). Any valid expression is allowed
as an output value.
Several other optional arguments are allowed within `output` blocks. These
will be described in the following sections.
## Accessing Child Module Outputs
## Output Value Documentation
In a parent module, outputs of child modules are available in expressions as
`module.<MODULE NAME>.<OUTPUT NAME>`. For example, if a child module named
`web_server` declared an output named `instance_ip_addr`, you could access that
value as `module.web_server.instance_ip_addr`.
## Optional Arguments
`output` blocks can optionally include `description`, `sensitive`, and `depends_on` arguments, which are described in the following sections.
### `description` — Output Value Documentation
Because the output values of a module are part of its user interface, you can
briefly describe the purpose of each value using the optional `description`
@ -73,7 +82,7 @@ string might be included in documentation about the module, and so it should be
written from the perspective of the user of the module rather than its
maintainer. For commentary for module maintainers, use comments.
## Sensitive Output Values
### `sensitive` — Suppressing Values in CLI Output
An output can be marked as containing sensitive material using the optional
`sensitive` argument:
@ -96,7 +105,7 @@ Sensitive output values are still recorded in the
to access the state data. For more information, see
[_Sensitive Data in State_](/docs/state/sensitive-data.html).
## Output Dependencies
### `depends_on` — Explicit Output Dependencies
Since output values are just a means for passing data out of a module, it is
usually not necessary to worry about their relationships with other nodes in

View File

@ -134,8 +134,8 @@ However, some dependencies cannot be recognized implicitly in configuration. For
example, if Terraform must manage access control policies _and_ take actions
that require those policies to be present, there is a hidden dependency between
the access policy and a resource whose creation depends on it. In these rare
cases, [the `depends_on` meta-argument](#depends_on-hidden-resource-dependencies)
can explicitly specify a dependency.
cases, [the `depends_on` meta-argument][inpage-depend] can explicitly specify a
dependency.
## Meta-Arguments
@ -151,14 +151,16 @@ any resource type to change the behavior of resources:
These arguments often have additional restrictions on what language features can
be used with them, which are described in each
### `depends_on`: Hidden Resource Dependencies
### `depends_on`: Explicit Resource Dependencies
[inpage-depend]: #depends_on-hidden-resource-dependencies
[inpage-depend]: #depends_on-explicit-resource-dependencies
Use the `depends_on` meta-argument to handle hidden resource dependencies that
Terraform can't automatically infer. Hidden dependencies happen when a resource
relies on some other resource's behavior but _doesn't_ access any of that
resource's data in its arguments.
Terraform can't automatically infer.
Explicitly specifying a dependency is only necessary when a resource relies on
some other resource's behavior but _doesn't_ access any of that resource's data
in its arguments.
This argument is available in all `resource` blocks, regardless of resource
type. For example: