Use when troubleshooting Atmos configuration, deployment errors, or unexpected behavior...
Techniques for troubleshooting Atmos configuration and deployment issues.
# See the fully-resolved YAML for a component
atmos describe component <component> -s <stack>
# Enable verbose debug logging
ATMOS_LOGS_LEVEL=debug atmos terraform plan <component> -s <stack>
# Validate all stack configurations
atmos validate stacks
# Reset local state and cache
atmos terraform clean <component> -s <stack>
The most powerful debugging tool is atmos describe stacks, which shows the final YAML after all imports, merges, and
inheritance:
# Describe all components in a stack (most useful for debugging)
atmos describe stacks -s plat-use2-dev
# Describe all stacks (very large output)
atmos describe stacks
# Describe a specific component in a stack
atmos describe component vpc -s plat-use2-dev
The output includes the fully-resolved configuration for each component:
metadata.component pointing to the right root module?!terraform.state expressions resolved?Use yq to filter the YAML output and extract specific information:
# Get vars for a specific component
atmos describe stacks -s plat-use2-dev | yq '.components.terraform.vpc.vars'
# Get all component names in a stack
atmos describe stacks -s plat-use2-dev | yq '.components.terraform | keys'
# Check a specific variable across components
atmos describe stacks -s plat-use2-dev | yq '.components.terraform.*.vars.enabled'
# Get backend config for a component
atmos describe stacks -s plat-use2-dev | yq '.components.terraform.vpc.backend'
To debug configuration before template/function processing, disable them:
# See raw config before Go templates are processed
atmos describe stacks -s plat-use2-dev --process-templates=false
# See config before Atmos functions (!terraform.state, etc.) are evaluated
atmos describe stacks -s plat-use2-dev --process-functions=false
# See completely raw config (no templates or functions)
atmos describe stacks -s plat-use2-dev --process-templates=false --process-functions=false
Use cases:
{{ }} expressions before evaluation!terraform.state expressions before they resolve!terraform.state lookups when debugging other issues!terraform.state require AWS access; disable to debug without auth| Command | Use When |
|---|---|
atmos describe stacks -s <stack> |
Debugging a stack - see all components and their resolved config |
atmos describe stacks -s <stack> | yq '...' |
Extract specific values from a stack |
atmos describe stacks |
Understanding full infrastructure (large output) |
atmos describe component <comp> -s <stack> |
Focused debugging of a single component |
Enable debug logging for detailed Atmos operations:
ATMOS_LOGS_LEVEL=debug atmos terraform plan <component> -s <stack>
Debug output includes:
!terraform.state, etc.)info (default) - Normal operationdebug - Detailed debugging informationtrace - Maximum verbosity (rarely needed)Error: stack 'xyz' not found
Debug:
# List available stacks
ls stacks/orgs/acme/
# Check stack file exists
cat stacks/orgs/acme/<tenant>/<stage>/<region>/<layer>.yaml
Common causes:
{tenant}-{region}-{stage})Error: component 'xyz' not found in stack
Debug:
# Check component exists in filesystem
ls components/terraform/
# Check component is configured in stack
atmos describe stacks -s <stack> | grep -A5 "xyz:"
Common causes:
Error: error evaluating !terraform.state: ...
Debug:
# Check the function syntax in your YAML
grep -r "!terraform.state" stacks/catalog/<component>/
# Verify the source component exists and has outputs
atmos describe component <source-component> -s <stack>
# Check if the source component has been deployed
atmos terraform plan <source-component> -s <stack>
Common causes:
For Atmos function syntax and patterns, see the atmos-functions skill.
Error: error configuring provider or AccessDenied
Debug:
# Check authentication is working
atmos auth login --provider acme-sso
# Verify identity resolution
ATMOS_LOGS_LEVEL=debug atmos terraform plan <component> -s <stack> 2>&1 | grep -i identity
For authentication issues, see the atmos-auth skill.
Problem: Variable has unexpected value
Debug:
# See the full resolved config
atmos describe component <component> -s <stack>
# Check catalog defaults
cat stacks/catalog/<component>/defaults.yaml
# Check stack overrides
cat stacks/orgs/acme/<tenant>/<stage>/<region>/<layer>.yaml
Inheritance order (later wins):
variables.tf)stacks/catalog/<component>/defaults.yaml)stacks/mixins/)stacks/orgs/acme/<tenant>/<stage>/_defaults.yaml)stacks/orgs/acme/<tenant>/<stage>/<region>/<layer>.yaml)Problem: Atmos behaving strangely, stale configuration
Fix:
# Clean local Terraform state and cache
atmos terraform clean <component> -s <stack>
# Then re-run
atmos terraform plan <component> -s <stack>
This removes:
.terraform/ directoryUse when:
Validate all stack configurations before deployment:
atmos validate stacks
This checks:
atmos describe stacks -s <stack> to see all resolved YAMLATMOS_LOGS_LEVEL=debug for detailed outputatmos terraform clean to reset stateatmos-auth skill if AWS errorsatmos-functions skill if !terraform.state errors