如何从状态显示中的地形中提取数据

kum*_*mar 6 terraform

我想提取来自 的数据terraform state show。根据文档我们应该使用terraform show -json. https://www.terraform.io/docs/cli/commands/state/show.html

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

不知道如何terrafrom state show结合使用terrafrom 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
}
Run Code Online (Sandbox Code Playgroud)

Sem*_*oor 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'
Run Code Online (Sandbox Code Playgroud)

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