Configuration Schema
Complete reference for tf2report configuration files.
File Format
Configuration files use YAML format.
File Locations
tf2report searches for configuration in order:
- Path specified by
--configflag ./tf2report.yaml(current directory)$HOME/.config/tf2report/tf2report.yaml
Schema
# Path to Terraform plan JSON file
terraform_plan_path: string
# Output format
output_format: string
# Resource filters
filters:
resource_types: []string
actions: []string
# Logging verbosity
verbosity: string
Fields
terraform_plan_path
Path to Terraform plan JSON file.
Type: String
Required: No
Default: terraform.tfplan.json
Example:
terraform_plan_path: /path/to/plan.json
output_format
Output format for reports.
Type: String
Required: No
Default: markdown
Valid Values: markdown, text, json
Example:
output_format: json
filters
Resource filtering options.
Type: Object Required: No Default: Empty (no filtering)
filters.resource_types
List of resource types to include.
Type: Array of strings
Required: No
Default: [] (all types included)
Example:
filters:
resource_types:
- aws_instance
- aws_s3_bucket
- aws_rds_cluster
filters.actions
List of actions to include.
Type: Array of strings
Required: No
Default: [] (all actions included)
Valid Values: create, update, delete, replace
Example:
filters:
actions:
- create
- delete
verbosity
Logging verbosity level.
Type: String
Required: No
Default: info
Valid Values: debug, info, warn, error
Example:
verbosity: debug
Complete Example
# Terraform plan file location
terraform_plan_path: terraform.tfplan.json
# Output format
output_format: markdown
# Filters
filters:
# Resource types to include
resource_types:
- aws_instance
- aws_s3_bucket
- aws_rds_cluster
- aws_security_group
# Actions to include
actions:
- create
- delete
- replace
# Logging verbosity
verbosity: info
Environment-Specific Examples
Production
terraform_plan_path: production.tfplan.json
output_format: markdown
filters:
actions:
- delete
- replace
verbosity: warn
Development
terraform_plan_path: dev.tfplan.json
output_format: text
verbosity: debug
CI/CD
terraform_plan_path: /tmp/terraform.tfplan.json
output_format: json
filters:
actions:
- delete
- replace
verbosity: info
Validation
tf2report validates configuration on load:
Valid Configuration
output_format: markdown
verbosity: info
✅ Loads successfully
Invalid Format
output_format: invalid_format
❌ Error: Invalid output format
Invalid Verbosity
verbosity: invalid_level
❌ Error: Invalid verbosity level
Invalid Action
filters:
actions:
- invalid_action
❌ Error: Invalid action type
Merging Configuration
Configuration is merged from multiple sources:
- Load defaults
- Apply configuration file
- Apply environment variables
- Apply command-line flags
Example:
output_format: markdown
verbosity: info
# Environment variable
export TF2REPORT_OUTPUT_FORMAT=text
# Command-line flag (highest priority)
tf2report --config config.yaml --format json
# Result: Uses JSON format
Best Practices
1. Commit Configuration
Commit configuration files to version control:
output_format: markdown
filters:
resource_types:
- aws_instance
- aws_s3_bucket
2. Environment-Specific Configs
Use separate configs for each environment:
configs/
├── prod.yaml
├── staging.yaml
└── dev.yaml
3. Document Custom Configs
Add comments to explain filters:
filters:
# Security review: IAM and network resources only
resource_types:
- aws_iam_role
- aws_iam_policy
- aws_security_group
- aws_kms_key
4. Use Minimal Config
Only specify non-default values:
# Good: Only overrides
output_format: json
# Unnecessary: Same as defaults
terraform_plan_path: terraform.tfplan.json
verbosity: info
Next Steps
- CLI Options - Command-line reference
- Configuration Guide - Usage guide
- Exit Codes - Exit code reference