如何从Terraform状态展示中提取数据

6
我希望从terraform state show中提取给定的数据。根据文档,我们应该使用terraform show -jsonhttps://www.terraform.io/docs/cli/commands/state/show.html

terraform state show的输出是供人类消费而非程序化消费。要提取状态数据以在其他软件中使用,请使用terraform show -json并使用记录的结构来解码结果。

不确定如何将terraform state showterraform show一起使用。

$ terraform state show 'packet_device.worker'
# packet_device.worker:
resource "packet_device" "worker" {
    billing_cycle = "hourly"
    created       = "2015-12-17T00:06:56Z"
    facility      = "ewr1"
    hostname      = "prod-xyz01"
    id            = "6015bg2b-b8c4-4925-aad2-f0671d5d3b13"
    locked        = false
}

terraform state show 没有 -json 选项。所以不确定你想要实现什么? - Marcin
@Marcin,我已经更新了上面的问题。请告诉我是否有帮助。 - kumar
2
你只需要使用 terraform show -json,而不是 terraform state show。你试过了吗? - Marcin
你想要实现什么并不是很清楚。你想获取一个资源的状态吗?你想对得到的 json 做什么? - yvesonline
1个回答

12

terraform state show命令显示单个Terraform资源的信息,不支持-json标志。 terraform show命令转储整个状态,并支持-json标志。 与terraform state show的输出不同,terraform show -json的输出被记录下来,旨在进行程序化消费。

如果要获取由terraform state show显示的特定资源的信息,则可以从完整状态的JSON中提取它,例如使用jq

terraform show -json | \
jq '.values.root_module.resources[] | select(.address == "packet_device.worker") | .values'

这是否有意义取决于你想要做什么。


谢谢,完美运作。 - anVzdGFub3RoZXJodW1hbg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接