Skip to main content

A simple, fast CLI tool for generating PNG visualizations of your Terraform infrastructure.

Project description

terraform-viz - Terraform Infrastructure Visualizer

PyPI version Python Support License: MIT

A simple, fast CLI tool for generating PNG visualizations of your Terraform infrastructure.

Overview

terraform-viz generates visual diagrams showing your Terraform resources, their dependencies, and relationships. Perfect for understanding complex infrastructure, documentation, and identifying potential issues.

Features

  • 🎨 PNG output - High-quality visualizations ready for documentation
  • 🔍 Flexible paths - Work with any Terraform directory
  • 📦 Plan support - Visualize specific plan files
  • 🧹 Clean operation - Optional intermediate file cleanup
  • 💬 Verbose mode - Detailed progress information with Rich formatting
  • Error handling - Clear error messages and suggestions
  • 🎯 Custom spacing - Adjustable node padding for optimal layouts

Installation

From PyPI (Recommended)

pip install terraform-viz
# or
uv add terraform-viz

From Source

git clone https://github.com/yourusername/terraform-viz.git
cd terraform-viz
uv pip install -e .

Prerequisites

  1. Terraform - Must be available in PATH or specify path with --tf-path
  2. Graphviz - Install with: winget install graphviz (Windows) or brew install graphviz (macOS)

Usage

Quick Start

# Basic usage - generates timestamped PNG in output/
tfviz

# Custom output filename  
tfviz -o infrastructure.png

# Work with different Terraform directory
tfviz --tf-dir ../production

# Visualize a specific plan file
tfviz --plan-file tfplan

# Specify custom Terraform executable
tfviz --tf-path /path/to/terraform

# Verbose output with intermediate files kept
tfviz -v --keep-dot

# Adjust spacing between nodes
tfviz --node-padding 1.5

Command Line Options

usage: terraform-viz [-h] [-o OUTPUT] [--tf-dir TF_DIR] [--tf-path TF_PATH] 
             [--keep-dot] [--verbose] [--node-padding NODE_PADDING] 
             [--plan-file PLAN_FILE]

Generate PNG visualization of Terraform infrastructure

options:
  -h, --help            show this help message and exit
  -o OUTPUT, --output OUTPUT
                        Output PNG filename (default: auto-generated with timestamp)
  --tf-dir TF_DIR       Directory containing Terraform files (default: current directory)
  --tf-path TF_PATH     Path to Terraform executable or alias (default: terraform)
  --keep-dot            Keep intermediate DOT file after rendering
  --verbose, -v         Enable verbose output
  --node-padding NODE_PADDING
                        Spacing between nodes (default: 1.0, larger = more spaced out)
  --plan-file PLAN_FILE
                        Path to Terraform plan file to visualize (optional)

How It Works

  1. Discovery - Locates Terraform and Graphviz executables
  2. Graph Generation - Runs terraform graph to create DOT format dependency graph
  3. Rendering - Uses Graphviz to convert DOT file to PNG
  4. Cleanup - Optionally removes intermediate files

Understanding the Output

The generated PNG shows:

  • Resources - Terraform resources (rectangles)
  • Data Sources - External data being fetched (diamonds)
  • Variables - Input variables (ovals)
  • Outputs - Output values (house shapes)
  • Dependencies - Arrows showing resource relationships

This helps you:

  • Understand resource dependencies
  • Identify circular dependencies
  • Visualize infrastructure complexity
  • Document your architecture

Troubleshooting

Common Issues

Terraform not found:

  • Install Terraform or ensure it's in your PATH

Graphviz not found:

  • Install Graphviz with: winget install graphviz

Empty visualization:

  • Check that you're in a directory with Terraform files (*.tf)
  • Ensure Terraform files are valid and can be parsed

Large file sizes:

  • Complex infrastructures generate large PNGs
  • Consider splitting large configurations into modules

Verbose Mode

Use -v flag to see detailed information:

  • Executable paths being used
  • Directory changes
  • File operations
  • Cleanup actions

File Structure

tfviz/
├── tfviz.py              # Main CLI tool
├── README.md             # This documentation
├── terraform_graph.dot   # Intermediate DOT file (if --keep-dot used)
└── *.png                 # Generated visualization files

Advanced Usage

Direct Graphviz Commands

You can also use the DOT file directly with Graphviz command-line tools:

# Generate different formats (run with --keep-dot first)
dot -Tsvg terraform_graph.dot -o graph.svg
dot -Tpng terraform_graph.dot -o graph.png  
dot -Tpdf terraform_graph.dot -o graph.pdf

# Generate interactive HTML
dot -Tsvg terraform_graph.dot | dot -Tcmapx > graph.map

Terraform Directory Structure

When using --terraform-dir, the tool works with any directory containing .tf files:

project/
├── infrastructure/
│   ├── tfviz/              # This tool location
│   ├── main.tf             # Terraform files here
│   ├── variables.tf
│   └── outputs.tf
├── dev/
│   └── *.tf                # Dev environment  
└── production/
    └── *.tf                # Production environment

Use: uv run python tfviz.py --terraform-dir ../dev to visualize dev environment

Integration

Documentation

Perfect for including infrastructure diagrams in:

  • README files
  • Wiki pages
  • Architecture documents
  • Presentations

CI/CD

Can be automated in pipelines to:

  • Generate diagrams on infrastructure changes
  • Include in deployment reports
  • Archive infrastructure snapshots

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

terraform_viz-0.1.0.tar.gz (10.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

terraform_viz-0.1.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file terraform_viz-0.1.0.tar.gz.

File metadata

  • Download URL: terraform_viz-0.1.0.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.13

File hashes

Hashes for terraform_viz-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a75f35b7a1590f5c7888134c523684e3f41a323d5c7f95d09e60c009a87fe4b3
MD5 c065fb29afe383c419fdf6b7a66b271b
BLAKE2b-256 c64f9515defc9a5b9ffb6bdec9729d4f3f11b79e376f79091b2c2d4f9ffaa4e0

See more details on using hashes here.

File details

Details for the file terraform_viz-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for terraform_viz-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 71fc5e95ec003f47e82bc17cfc7c0e6d64cef5df5e872d5d98bedc987e6f3b90
MD5 ff82d89228711231f781031302340667
BLAKE2b-256 e8e47cff2c5f0a89df6c5eaed7a2e5ea4574d75e0a85763c3940a3f2577635e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page