SuperAPI AI 工具集

aztfexport

部署与运维

查看项目

更新于 10-16 06:21

技能介绍

用途:aztfexport 用于把已存在的 Azure 资源反向生成为 Terraform 配置(HCL)与状态文件,适合 Azure 专用工作流,或使用早于 Terraform 1.14 原生 terraform query 的版本。

主要能力:

  • aztfexport resource:导出单个 Azure 资源
  • aztfexport resource-group:导出整个资源组
  • aztfexport query:导出符合 Azure Resource Graph 查询的资源

必要用法:

  1. 先确定资源 ID,可用 az 命令查找,例如:az resource list --query "[?name=='RESOURCE_NAME']" -o table
  2. 校验二进制与架构:file $(which aztfexport)、uname -m、aztfexport --version
  3. 运行导出,单资源示例:aztfexport resource --non-interactive --plain-ui -o ./terraform-export "/subscriptions/SUB_ID/resourceGroups/RG/providers/TYPE/NAME"
  4. 检查生成文件:main.tf、provider.tf、terraform.tfstate(有时含 import.tf)
  5. 验证:terraform init 后执行 terraform plan

常用参数:--non-interactive(跳过交互提示)、--plain-ui(关闭 TUI,必须与非交互配合)、-o 指定输出目录、--append 追加到已有目录、--overwrite 覆盖、--hcl-only 只生成代码不导入状态。

限制与注意事项:

  • 架构不匹配(如 ARM Mac 上跑 x86 二进制)会导致崩溃或 exec format error
  • 输出目录必须为空或不存在,否则报错
  • 默认资源名为 res-0 风格,需自行在 HCL 与 state 中改名
  • 名称含特殊字符的资源可能被静默跳过
  • 导出的 terraform plan 可能出现计算属性差异
  • RBAC 默认不导出,除非使用 --include-role-assignment
  • 会固定特定 AzureRM 版本,目标栈版本不一致可能产生差异
  • 若使用 Terraform >= 1.14 且需多云批量导入,应改用 terraform query 相关技能