mcpField
T
terraform-azurerm-set-diff-analyzer

terraform-azurerm-set-diff-analyzer

github.com/githubCloud & DevOps40.5k8.9k installsUpdated 1d ago
Repository

About terraform-azurerm-set-diff-analyzer

A skill for analyzing Terraform AzureRM plan diffs, identifying false positives caused by Set-type attributes and separating them from actual resource changes. It is intended for plan review and CI/CD filtering.

Key features

  1. 01Read Terraform plan JSON
  2. 02Identify Set attribute false positives
  3. 03Separate real resource changes
  4. 04Filter diffs in CI/CD

Use cases

  1. 01Review Application Gateway plans
  2. 02Investigate Load Balancer or NSG diffs
  3. 03Filter false positives in CI/CD

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/github/awesome-copilot --skill terraform-azurerm-set-diff-analyzer

After installing, type/terraform-azurerm-set-diff-analyzerin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
azurerm_set_attributes.json
azurerm_set_attributes.md
scripts/
.gitignore
analyze_plan.py
README.md

Details

From the project README

Terraform AzureRM Set Diff Analyzer

A skill to identify "false-positive diffs" in Terraform plans caused by AzureRM Provider's Set-type attributes and distinguish them from actual changes.

When to Use

  • terraform plan shows many changes, but you only added/removed a single element
  • Application Gateway, Load Balancer, NSG, etc. show "all elements changed"
  • You want to automatically filter false-positive diffs in CI/CD

Background

Terraform's Set type compares by position rather than by key, so when adding or removing elements, all elements appear as "changed". This is a general Terraform issue, but it's particularly noticeable with AzureRM resources that heavily use Set-type attributes like Application Gateway, Load Balancer, and NSG.

These "false-positive diffs" don't actually affect the resources, but they make reviewing terraform plan output difficult.

Prerequisites

  • Python 3.8+

If Python is unavailable, install via your package manager (e.g., apt install python3, brew install python3) or from python.org.

Basic Usage

# 1. Generate plan JSON output
terraform plan -out=plan.tfplan
terraform show -json plan.tfplan > plan.json

# 2. Analyze
python scripts/analyze_plan.py plan.json

Troubleshooting

  • python: command not found: Use python3 instead, or install Python
  • ModuleNotFoundError: Script uses only standard library; ensure Python 3.8+

Detailed Documentation

Comments

Markdown supported