Ansible Roadmap
Complete Ansible roadmap from ad-hoc commands to enterprise-grade playbooks, roles, Vault, AWX, and GitOps-based configuration management.
Ansible Foundations
SSH-based automation without agents
What to learn
- Ansible architecture — control node, managed nodes, no agents
- Installing Ansible — pip install, collections
- Inventory — INI format, YAML format, host groups
- Ad-hoc commands — ansible all -m ping, shell, copy
- SSH key setup — passwordless auth to managed hosts
- Ansible configuration — ansible.cfg hierarchy
Key tools
Playbook Fundamentals
Declarative automation in YAML
What to learn
- Playbook structure — plays, tasks, hosts, become
- Core modules — apt/yum, copy, template, service, file, command
- Variables — vars, vars_files, host_vars, group_vars
- Conditionals — when, and/or logic, registered variables
- Loops — loop, with_items, dict2items
- Handlers — notify pattern, listen, flush_handlers
- Tags — run only tagged tasks, skip tags
Key tools
Inventory & Dynamic Inventory
Manage hundreds of hosts dynamically
What to learn
- Static inventory — INI and YAML formats
- Dynamic inventory — AWS EC2, GCP, Azure plugins
- Inventory plugins vs scripts — modern approach
- Host patterns — groups, wildcards, regex
- Inventory variables — host_vars/, group_vars/ directories
- ansible-inventory --list and --graph for debugging
Key tools
Roles & Galaxy
Reusable, shareable automation units
What to learn
- Role directory structure — tasks, handlers, vars, defaults, templates, files
- ansible-galaxy role init — scaffold a new role
- Role dependencies — meta/main.yml
- Ansible Galaxy — finding and using community roles
- Galaxy Collections — namespaced role/module bundles
- Testing roles — Molecule framework for role TDD
Key tools
Jinja2 Templates & Filters
Dynamic config files generated from variables
What to learn
- template module — deploy config files from .j2 templates
- Jinja2 syntax — variables, loops, conditionals in templates
- Built-in filters — default, join, select, map, combine
- Custom filters — extend Jinja2 with Python
- vault_password_client — dynamic vault passwords
- Lookups — read files, env vars, secrets in templates
Key tools
Ansible Vault & Secrets
Encrypt secrets properly — no plaintext in git
What to learn
- ansible-vault create/encrypt/decrypt/edit/view
- Encrypting individual strings with vault_encrypted_string
- Multiple vault passwords — vault-id for different environments
- Vault password files and environment variables
- Integration with HashiCorp Vault via lookup plugin
- Best practices — vault env files, never commit decrypted secrets
Key tools
AWX & Automation Platform
Enterprise-grade Ansible with a UI and API
What to learn
- AWX architecture — web UI, API, task engine, database
- Projects — connect AWX to your git repositories
- Job Templates — parameterized playbook execution
- Credentials — SSH keys, vault passwords, cloud credentials
- Workflows — chain job templates with conditions
- Scheduling — cron-based automatic execution
- RBAC — teams, users, and permissions in AWX
Key tools
GitOps & CI/CD with Ansible
Treat automation code like application code
What to learn
- Ansible in CI/CD — GitHub Actions + ansible-playbook
- Linting pipeline — ansible-lint, yamllint in PR checks
- Testing pipeline — Molecule tests on every commit
- GitOps for Ansible — PR approval before config deployment
- Idempotency testing — run twice, verify no changes second time
- Drift detection — compare actual state vs desired state
Key tools
Interview Prep
DevOps Interview Prep Bundle — 1000+ Q&A
Every topic on this roadmap has interview questions in the bundle — Docker, Kubernetes, AWS, CI/CD, Linux, SRE, FinOps, System Design. Grab it before your next interview.