1.6.13.1. output

terraform output命令被用来提取状态文件中输出值的值。

1.6.13.1.1. 用法

terraform output [options] [NAME]

如果不添加参数,output命令会展示根模块内定义的所有输出值。如果指定了NAME,只会输出相关输出值。

可以使用以下参数:

  • -json:使用该参数后Terraform会使用JSON格式输出。如果指定了NAME,只会输出相关输出值。该参数搭配jq使用可以构建复杂的流水线
  • -no-color:不输出颜色
  • -state=path:状态文件的路径,默认为"terraform.tfstate"。启用远程Backend时该参数无效

1.6.13.1.2. 样例

假设有如下输出值代码:

output "lb_address" {
  value = aws_alb.web.public_dns
}

output "instance_ips" {
  value = [aws_instance.web[*].public_ip]
}

output "password" {
  sensitive = true
  value = [var.secret_password]
}

列出所有输出值:

$ terraform output

注意password输出值定义了sensitive = true,所以它的值在输出时会被隐藏:

$ terraform output password
password = <sensitive>

要查询负载均衡的DNS地址:

$ terraform output lb_address
my-app-alb-1657023003.us-east-1.elb.amazonaws.com

查询所有主机的IP:

$ terraform output instance_ips
test = [
    54.43.114.12,
    52.122.13.4,
    52.4.116.53
]

使用-json和jq查询指定主机的ip:

$ terraform output -json instance_ips | jq '.value[0]'

results matching ""

    No results matching ""