2.7 KiB
layout | page_title | sidebar_current | description |
---|---|---|---|
docs | Command: output | docs-commands-output | The `terraform output` command is used to extract the value of an output variable from the state file. |
Command: output
The terraform output
command is used to extract the value of
an output variable from the state file.
Usage
Usage: terraform output [options] [NAME]
With no additional arguments, output
will display all the outputs for
the root module. If an output NAME
is specified, only the value of that
output is printed.
The command-line flags are all optional. The list of available flags are:
-json
- If specified, the outputs are formatted as a JSON object, with a key per output. IfNAME
is specified, only the output specified will be returned. This can be piped into tools such asjq
for further processing.-no-color
- If specified, output won't contain any color.-state=path
- Path to the state file. Defaults to "terraform.tfstate". Ignored when remote state is used.
Examples
These examples assume the following Terraform output snippet.
output "instance_ips" {
value = aws_instance.web.*.public_ip
}
output "lb_address" {
value = aws_alb.web.public_dns
}
output "password" {
sensitive = true
value = var.secret_password
}
To list all outputs:
$ terraform output
instance_ips = [
"54.43.114.12",
"52.122.13.4",
"52.4.116.53"
]
lb_address = "my-app-alb-1657023003.us-east-1.elb.amazonaws.com"
password = <sensitive>
Note that outputs with the sensitive
attribute will be redacted:
$ terraform output password
password = <sensitive>
To query for the DNS address of the load balancer:
$ terraform output lb_address
"my-app-alb-1657023003.us-east-1.elb.amazonaws.com"
To query for all instance IP addresses:
$ terraform output instance_ips
instance_ips = [
"54.43.114.12",
"52.122.13.4",
"52.4.116.53"
]
Use in automation
The terraform output
command by default displays in a human-readable format,
which can change over time to improve clarity. For use in automation, use
-json
to output the stable JSON format. You can parse the output using a JSON
command-line parser such as jq.
For string outputs, you can remove quotes using jq -r
:
$ terraform output -json lb_address | jq -r .
my-app-alb-1657023003.us-east-1.elb.amazonaws.com
To query for a particular value in a list, use jq
with an index filter. For
example, to query for the first instance's IP address:
$ terraform output -json instance_ips | jq '.[0]'
"54.43.114.12"