我已经使用 Terraform 部署了我的基础设施,并且我注意到我terraform.tfstate
想要提取 terraform 的状态 () 文件中的一些有趣信息。例如
$ terraform state show 'packet_device.worker'
id = 6015bg2b-b8c4-4925-aad2-f0671d5d3b13
billing_cycle = hourly
created = 2015-12-17T00:06:56Z
facility = ewr1
...
Run Code Online (Sandbox Code Playgroud)
我想以某种方式将其转变为
$ terraform state show 'packet_device.worker.id'
6015bg2b-b8c4-4925-aad2-f0671d5d3b13
Run Code Online (Sandbox Code Playgroud)
但在最后添加id
似乎不起作用。有什么建议我可以实现这种行为吗?
Aki*_*kif 12
您可以利用terraform show -json
和jq
从 Terraform 状态文件中获取特定值。
terraform show -json <state_file> | jq '.values.root_module.resources[] | select(.address=="<terraform_resource_name>") | .values.<property_name>'
Run Code Online (Sandbox Code Playgroud)
您有一个名为 的状态文件terraform.tfstate
和一个 Terraform 资源,并且packet_device.worker
您想要获取id
. 那么就会是这样的:
terraform show -json terraform.tfstate | jq '.values.root_module.resources[] | select(.address=="packet_device.worker") | .values.id'
Run Code Online (Sandbox Code Playgroud)
terraform.tfstate
也可以省略,因为它是状态文件的默认名称。
Saj*_*nnu 10
Terraform state show 命令用于检索给定资源的所有属性,您将无法从中获取单个属性,因为参数是资源地址并且用于专门引用资源。记录在https://www.terraform.io/docs/internals/resource-addressing.html
您可以做的是将资源属性存储在输出值中并使用命令
terraform 输出 {输出值提取器}
请参阅: https: //www.terraform.io/docs/configuration/outputs.html
归档时间: |
|
查看次数: |
26564 次 |
最近记录: |