terraform-azurerm-set-diff-analyzer

terraform-azurerm-set-diff-analyzer

热门

分析 Terraform plan 的 JSON 输出,针对 AzureRM Provider 区分误报差异(Set 类型属性中仅顺序变化)和实际资源变更。适用于审查 Application Gateway、Load Balancer、Firewall、Front Door、NSG 等 Azure 资源的 terraform plan 输出,这些资源的 Set 类型属性因内部顺序变化导致虚假差异。

3.7万Star
4569Fork
更新于 2026/7/14
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 python3brew 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,或安装 Python
  • ModuleNotFoundError:脚本仅使用标准库;请确保 Python 3.8+

详细文档