SuperAPI AI 工具集

terraform-search-import

部署与运维

查看项目

更新于 10-16 07:20

技能介绍

用途:通过声明式查询发现现有云资源,生成配置并将其批量导入 Terraform 状态,适合把未托管资源纳入 Terraform、审计存量云基础设施、从手工开通迁移到 IaC,以及跨区域或跨账号发现资源。

主要能力:用 .tfquery.hcl 文件中的 list 块定义查询,支持 provider 认证、variable 与 locals 参数化、for_each 跨区域查询、config 内 provider 特定的 filter 过滤和 limit 限制数量;执行 terraform query 输出匹配资源(列为查询地址、标识属性、name tag);用 -generate-config-out=<file> 生成 resource 与 import 块;import 采用基于 identity 的导入(Terraform 1.12+)。

必要用法:先确认目标资源类型受支持,运行 ./scripts/list_resources.sh aws 或 ./scripts/list_resources.sh,也可用 terraform providers schema -json 配合 jq 查询 list_resource_schemas。Terraform Search 需要已初始化的目录:配置 required_providers 后执行 terraform init。若资源受支持且 Terraform 版本高于 1.14.0,走 Terraform Search 流程;否则用 references/MANUAL-IMPORT.md 的手工发现流程。命令包括 terraform query、terraform query -generate-config-out=imported.tf、terraform query -var='target_environment=production',随后 terraform plan、terraform apply 完成导入。

生成后处理:生成配置包含全部属性,需删除 computed/只读属性、用变量替换硬编码值、规范命名并整理文件。验证可用 terraform state list 与 terraform show -json | jq '.values.root_module.resources[] | {address, type, name}';仅在 provider 不可用或需避免执行 Terraform 时才回退到原始状态,且状态含明文敏感值,不要输出到日志。

限制:provider 对 list resources 的支持因版本而异,受支持列表在快速扩展,使用前必须核实;查询可能返回空、导入可能因资源已在状态中失败、生成配置可能含错误需修正。资料未提供收费、价格或性能信息。