DevOps Simplicity Checker
Infrastructure should be SIMPLE by default. This skill detects overengineering.
Simplicity Checklist
| Check | Pass | Fail | |-------|------|------| | File count | ≤8 .tf files | >15 files in nested directories | | Module usage | None or registry only | Custom modules for <5 resources | | Directory depth | Flat or 1 level | 3+ levels of nesting | | Ansible playbooks | Single playbook | Multiple playbooks + custom roles | | Ansible roles | Galaxy roles only | Custom roles for standard tasks | | Variables | Inline defaults | Complex variable hierarchies |
Complexity Score Calculation
Files: 1 point per .tf file over 5
Modules: 3 points per custom module
Directories: 2 points per level over 1
Ansible roles: 3 points per custom role
Score 0-5: Simple (GOOD)
Score 6-10: Moderate (REVIEW)
Score 11+: Overengineered (SIMPLIFY)
Detection Commands
# Count .tf files
find . -name "*.tf" | wc -l
# Find custom modules (not registry)
grep -r "source\s*=" *.tf | grep -v "registry.terraform.io" | grep -v "github.com" | wc -l
# Directory depth
find . -name "*.tf" -printf '%h\n' | sort -u | awk -F'/' '{print NF-1}' | sort -rn | head -1
# Custom Ansible roles (not Galaxy)
ls roles/ 2>/dev/null | wc -l
# Variable files
find . -name "*.tfvars" -o -name "variables.tf" | wc -l
Questions to Ask
- Could this be done with fewer files?
- Is this custom module solving a problem registry modules can't?
- Would a flat structure work just as well?
- Does this Ansible role exist in Galaxy already?
- Are these variable hierarchies necessary or premature abstraction?
Red Flags
| Pattern | Problem | Fix |
|---------|---------|-----|
| modules/ with single resource | Over-abstraction | Inline the resource |
| environments/{dev,staging,prod}/ | Duplication | Use workspaces or tfvars |
| roles/common/ for apt packages | Reinventing wheel | Use Galaxy role |
| Nested .tf imports | Hard to follow | Flatten structure |
| >10 variable files | Configuration sprawl | Consolidate |
Scoring Report Format
SIMPLICITY SCORE: X/10
File Count: X files (+Y penalty)
Custom Modules: X modules (+Y penalty)
Directory Depth: X levels (+Y penalty)
Custom Roles: X roles (+Y penalty)
Total Penalty: X points
Verdict: SIMPLE | MODERATE | OVERENGINEERED
Recommendations:
- [ ] Consider flattening directory structure
- [ ] Replace custom module X with registry module
- [ ] Use Galaxy role for standard task