Terraform 临时输出

Terraform ad-hoc output

是否可以要求 Terraform 提供临时输出?查看文档:

我需要向脚本添加输出定义,例如:

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

然后运行terraform apply,最后terraform output instance_ips

我经常想检查一个值,例如。在设置依赖资源时。我希望能够 运行 像这样的东西:

terraform output -adhoc 'aws_instance.web.*.public_ip'

terraform output 命令和 terraform console 命令都从最新的 Terraform 状态快照中得出它们的结果,这就是为什么你需要 运行 terraform apply 为了创建一个包含您要引用的数据的新状态快照。

如果在根模块中声明了此输出值,那么 Terraform 还应将其作为 terraform plan 输出的一部分包含在内,以便您查看 Terraform 在应用计划后期望它采用的值。

Changes to outputs:
  + instance_ips = [
    + "10.2.3.4",
  ]

但是,Terraform 只能对完全从您在配置中静态定义的数据派生的值或 提供商能够在规划阶段预测的值执行此操作. public EC2 实例的 IP 地址仅作为创建它的一部分而确定,因此在您的情况下,您更有可能看到信息较少的内容:

Changes to outputs:
  + instance_ips = [
    + (known after apply),
  ]

(known after apply) 占位符表示提供者在计划的更改之一完成之前无法预测值的情况。在那种情况下,如果不先 运行ning terraform apply 就无法看到这个值,因为它正在应用实际决定值的更改。