terraform/website/docs/commands/output.html.markdown

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. If NAME is specified, only the output specified will be returned. This can be piped into tools such as jq 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"