website: outputs
This commit is contained in:
parent
2dc48b59dc
commit
1d4cbb6303
|
@ -0,0 +1,78 @@
|
||||||
|
---
|
||||||
|
layout: "intro"
|
||||||
|
page_title: "Output Variables"
|
||||||
|
sidebar_current: "gettingstarted-outputs"
|
||||||
|
---
|
||||||
|
|
||||||
|
# Output Variables
|
||||||
|
|
||||||
|
In the previous section, we introduced input variables as a way
|
||||||
|
to parameterize Terraform configurations. In this page, we
|
||||||
|
introduce output variables as a way to organize data to be
|
||||||
|
easily queried and shown back to the Terraform user.
|
||||||
|
|
||||||
|
When building potentially complex infrastructure, Terraform
|
||||||
|
stores hundreds or thousands of attribute values for all your
|
||||||
|
resources. But as a user of Terraform, you may only be interested
|
||||||
|
in a few values of importance, such as a load balancer IP,
|
||||||
|
VPN address, etc.
|
||||||
|
|
||||||
|
Outputs are a way to tell Terraform what data is important.
|
||||||
|
This data is outputted when `apply` is called, and can be
|
||||||
|
queried using the `terraform output` command.
|
||||||
|
|
||||||
|
## Defining Outputs
|
||||||
|
|
||||||
|
Let's define an output to show us the public IP address of the
|
||||||
|
elastic IP address that we create. Add this to any of your
|
||||||
|
`*.tf` files:
|
||||||
|
|
||||||
|
```
|
||||||
|
output "ip" {
|
||||||
|
value = "${aws_eip.ip.public_ip}"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
This defines an output variables named "ip". The `value` field
|
||||||
|
specifies what the value will be, and almost always contains
|
||||||
|
one or more interpolations, since the output data is typically
|
||||||
|
dynamic in some form. In this case, we're outputting the
|
||||||
|
`public_ip` attribute of the elastic IP address.
|
||||||
|
|
||||||
|
Multiple `output` blocks can be defined to specify multiple
|
||||||
|
output variables.
|
||||||
|
|
||||||
|
## Viewing Outputs
|
||||||
|
|
||||||
|
Run `terraform apply` to populate the output. This only needs
|
||||||
|
to be done once after the output is defined. The apply output
|
||||||
|
should change slightly. At the end you should see this:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ terraform apply
|
||||||
|
...
|
||||||
|
|
||||||
|
Apply complete! Resources: 0 added, 0 changed, 0 destroyed.
|
||||||
|
|
||||||
|
Outputs:
|
||||||
|
|
||||||
|
ip = 50.17.232.209
|
||||||
|
```
|
||||||
|
|
||||||
|
`apply` highlights the outputs. You can also query the outputs
|
||||||
|
after apply-time using `terraform output`:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ terraform output ip
|
||||||
|
50.17.232.209
|
||||||
|
```
|
||||||
|
|
||||||
|
This command is useful for scripts to extract outputs.
|
||||||
|
|
||||||
|
## Next
|
||||||
|
|
||||||
|
You now know how to parameterize configurations with input
|
||||||
|
variables, and extract important data using output variables.
|
||||||
|
|
||||||
|
Next, we're going to use provisioners to install some software
|
||||||
|
on the instances created on top of the base AMI used.
|
Loading…
Reference in New Issue