thothctl

Advanced Dependency Visualization with Input Variables

Feature: Show Explicit Input Variables in Dependency Graph

Overview

The --show-inputs flag enables advanced dependency visualization that shows explicit input variables passed between Terragrunt stacks, not just module dependencies.

Usage

Basic Dependency Graph (Default)

# Shows module-level dependencies only
thothctl check iac -type deps

Output: Standard dependency graph showing which modules depend on each other.

Advanced Graph with Input Variables

# Shows explicit input variables from other stacks
thothctl check iac -type deps --show-inputs

Output: Enhanced dependency graph including:

How It Works

Default Mode

Uses terragrunt dag graph command:

terragrunt dag graph

This is an alias for:

terragrunt list --format=dot --dependencies --external

Advanced Mode (–show-inputs)

Uses explicit terragrunt list command with full flags:

terragrunt list --format=dot --dependencies --external

Key Differences:

Examples

Example 1: Basic Dependencies

thothctl check iac -type deps

Shows:

vpc
  └─ security-groups
      └─ ec2-instances

Example 2: With Input Variables

thothctl check iac -type deps --show-inputs

Shows:

vpc (outputs: vpc_id, subnet_ids)
  └─ security-groups (inputs: vpc_id from vpc)
      └─ ec2-instances (inputs: vpc_id from vpc, sg_id from security-groups)
  └─ rds (inputs: subnet_ids from vpc)

Use Cases

1. Understanding Cross-Stack Dependencies

# See which stacks consume outputs from other stacks
thothctl check iac -type deps --show-inputs

Useful for:

2. Debugging Dependency Issues

# When a stack fails due to missing inputs
thothctl check iac -type deps --show-inputs

Helps identify:

3. Documentation Generation

# Generate comprehensive dependency documentation
thothctl check iac -type deps --show-inputs > dependencies.dot
dot -Tpng dependencies.dot > dependencies.png

Technical Details

Terragrunt Commands Used

Default (--show-inputs not set):

terragrunt dag graph --working-dir <directory>

Advanced (--show-inputs set):

terragrunt list --format=dot --dependencies --external --working-dir <directory>

What Gets Discovered

With --show-inputs, Terragrunt discovers:

  1. Direct Dependencies: Modules explicitly declared in dependency blocks
  2. External Dependencies: Dependencies outside the current working directory
  3. Input Variables: Variables passed via dependency outputs
  4. Transitive Dependencies: Dependencies of dependencies

Output Format

Both modes output GraphViz DOT format, which can be:

  1. Displayed in terminal (ASCII tree visualization)
  2. Converted to images:
    thothctl check iac -type deps --show-inputs > graph.dot
    dot -Tpng graph.dot > graph.png
    dot -Tsvg graph.dot > graph.svg
    

Configuration

Terragrunt Configuration Example

# Stack A: VPC
# stacks/vpc/terragrunt.hcl
terraform {
  source = "../../modules/vpc"
}

inputs = {
  cidr_block = "10.0.0.0/16"
}
# Stack B: Security Groups (depends on VPC)
# stacks/security-groups/terragrunt.hcl
dependency "vpc" {
  config_path = "../vpc"
}

inputs = {
  vpc_id = dependency.vpc.outputs.vpc_id  # ← This is shown with --show-inputs
}

Comparison

Feature Default –show-inputs
Command dag graph list --format=dot --dependencies --external
Shows modules ✅ Yes ✅ Yes
Shows dependencies ✅ Yes ✅ Yes
Shows external deps ✅ Yes ✅ Yes
Shows input variables ❌ No ✅ Yes
Shows output values ❌ No ✅ Yes
Performance Fast Slightly slower (more discovery)

Best Practices

  1. Use default mode for quick checks:
    thothctl check iac -type deps
    
  2. Use –show-inputs for detailed analysis:
    thothctl check iac -type deps --show-inputs
    
  3. Combine with recursive flag:
    thothctl check iac -type deps --show-inputs --recursive
    
  4. Generate documentation:
    thothctl check iac -type deps --show-inputs > docs/dependencies.dot
    

Troubleshooting

Issue: No external dependencies shown

Solution: Ensure your Terragrunt configurations use dependency blocks:

dependency "vpc" {
  config_path = "../vpc"
}

Issue: Graph is too complex

Solution: Use filtering or focus on specific stacks:

cd stacks/specific-stack
thothctl check iac -type deps --show-inputs

Issue: Command is slow

Solution: The --show-inputs flag requires more discovery. For quick checks, use default mode:

thothctl check iac -type deps  # Faster

References