SKILL.md
readonly只读
name
terraform-azurerm-set-diff-analyzer
description
分析 Terraform plan 的 JSON 输出,针对 AzureRM Provider 区分误报差异(Set 类型属性中仅顺序变化)和实际资源变更。适用于审查 Application Gateway、Load Balancer、Firewall、Front Door、NSG 等 Azure 资源的 terraform plan 输出,这些资源的 Set 类型属性因内部顺序变化导致虚假差异。
Terraform AzureRM Set Diff Analyzer
一个用于识别 Terraform plan 中由 AzureRM Provider 的 Set 类型属性引起的“误报差异”,并将其与实际变更区分开的技能。
使用场景
terraform plan显示大量变更,但你只添加/删除了单个元素- Application Gateway、Load Balancer、NSG 等显示“所有元素已更改”
- 你希望在 CI/CD 中自动过滤误报差异
背景
Terraform 的 Set 类型按位置而非键进行比较,因此添加或删除元素时,所有元素都会显示为“已更改”。这是 Terraform 的普遍问题,但在大量使用 Set 类型属性的 AzureRM 资源(如 Application Gateway、Load Balancer 和 NSG)中尤为明显。
这些“误报差异”实际上不会影响资源,但会使审查 terraform plan 输出变得困难。
前提条件
- Python 3.8+
如果 Python 不可用,请通过包管理器安装(例如 apt install python3、brew install python3)或从 python.org 下载。
基本用法
# 1. 生成 plan JSON 输出
terraform plan -out=plan.tfplan
terraform show -json plan.tfplan > plan.json
# 2. 分析
python scripts/analyze_plan.py plan.json
故障排除
python: command not found:改用python3,或安装 PythonModuleNotFoundError:脚本仅使用标准库;请确保 Python 3.8+
详细文档
- scripts/README.md - 所有选项、输出格式、退出码、CI/CD 示例
- references/azurerm_set_attributes.md - 支持的资源和属性






