Terraform 如何列出地形资源及其ID
我想将一些地形资源从一个存储库移动到另一个存储库。我认为最简单的方法是在一个存储库中导入Terraform 如何列出地形资源及其ID,terraform,Terraform,我想将一些地形资源从一个存储库移动到另一个存储库。我认为最简单的方法是在一个存储库中导入terraform,在另一个存储库中导入terraform rm 使用terraformstate list我可以得到一个资源列表,但是没有它们的ID。我想我可以将该输出与terraformstate show结合起来,但是速度非常慢,我必须从HCL解析出ID。不幸的是,没有JSON输出 通过terraformshow-json我可以获得json格式的整个状态,但是可以有大量的模块嵌套,因此解析也不会很简单
terraform
,在另一个存储库中导入terraform rm
使用terraformstate list
我可以得到一个资源列表,但是没有它们的ID。我想我可以将该输出与terraformstate show
结合起来,但是速度非常慢,我必须从HCL解析出ID。不幸的是,没有JSON输出
通过terraformshow-json
我可以获得json格式的整个状态,但是可以有大量的模块嵌套,因此解析也不会很简单
还有其他选择吗
编辑1:
terraformshow-json
对于我正在处理的相对较小的存储库,我有2000行代码(太多无法确定格式),从以下内容开始:
{
"format_version": "0.1",
"terraform_version": "0.14.9",
"values": {
"root_module": {
"child_modules": [
{
"address": "module.cloudtrail",
"child_modules": [
{
"address": "module.cloudtrail.module.cloudtrail_bucket",
"resources": [
{
我认为至少还有一层嵌套
子模块
。我认为资源可以在各个层面上使用。从中可以得到列表,但我不认为这是微不足道的。我刚刚意识到,每次我做地形规划时,我都能得到我想要的。但是我不想要这个计划,所以我可以做terraformrefresh | sed s'|:刷新状态\[id=||'| sed s'| \]$| |'
。这有点慢,但是我得到了一个资源列表和它们的ID
我甚至可以添加sed s'| ^ | terraform import |'>import.sh
并导入所有资源(或编辑后的部分资源)使用bash import.sh
可以展示一个来自terraform show-json
的输出示例,了解为什么它不繁琐吗?可以使用jq
处理json并获得所需的值。我从jq
开始,然后我发现我没有一个简单的列表,但是所有这些嵌套,你必须提供你尝试过的json和jq命令的完整示例,以及你得到了什么和你想要得到什么。