« Back to Index

Better Terraform Diff

View original Gist on GitHub

Tags: #shell #iac

Better Terraform Diff.sh

#!/usr/bin/env bash

# Get plan
terraform plan -out=tfplan > /dev/null 2>&1

# Convert plan to json
CHANGES=$(terraform show -json tfplan | jq '.resource_changes[].change')

# Diff before and after with newlines expanded
diff -u \
  <(echo "$CHANGES" | jq '.before' | sed 's/\\n/\//g') \
  <(echo "$CHANGES" | jq '.after' | sed 's/\\n/\//g')

# If you prefer to use another diff tool like `git diff`
echo "$CHANGES" | jq '.before' | sed 's/\\n/\//g' > before
echo "$CHANGES" | jq '.after' | sed 's/\\n/\//g' > after
git diff --no-index before after
rm before after