A comprehensive, hands-on learning journey from Ansible fundamentals to advanced automation techniques.
Learn Ansible from zero to production-ready skills through a structured 30-day curriculum with video lessons, written documentation, and working code examples.
This repository is the companion to the complete video series on the techbeatly YouTube Channel.
π¬ Watch the Full Ansible Course Playlist
By completing this 30-day bootcamp, you will:
- β Understand Ansible architecture and core concepts
- β Set up and manage Ansible lab environments
- β Write production-quality playbooks and roles
- β Master variables, facts, and dynamic inventories
- β Implement secrets management with Ansible Vault
- β Use advanced features: loops, conditionals, handlers, blocks
- β Create reusable roles and leverage Ansible Galaxy
- β Apply best practices for real-world automation
- β Build confidence to automate infrastructure at scale
- Linux basics: Command line navigation, file system, users/permissions
- SSH fundamentals: How to connect to remote systems
- YAML syntax: Basic understanding of YAML structure
- Text editor: Familiarity with vim, nano, or VS Code
- Control Node: Linux, macOS, or WSL2 (Windows)
- Managed Nodes: 1-3 Linux systems (VMs, cloud instances, or containers)
- Ansible Version: 2.9+ (Core 2.12+ recommended)
- Python: 3.6+ on both control and managed nodes
- Virtualization (optional): VirtualBox + Vagrant for local labs
- VirtualBox 6.1+ and Vagrant 2.2+ (for Days 2-4 lab setup)
- At least 4 GB RAM and 20 GB disk space for VMs
- Stable internet connection for package downloads
- Follow the daily sequence: Start with Day 01 and progress in order
- Watch the video first: Each day links to the corresponding video lesson
- Read the README: Detailed explanations and concepts for each topic
- Run the examples: Execute playbooks in your lab environment
- Experiment: Modify examples to deepen understanding
Day-XX-Topic-Name/
βββ README.md # Lesson content and explanations
βββ site.yaml # Main example playbook
βββ ansible.cfg # Ansible configuration for this lesson
βββ inventory # Sample inventory file
βββ [other files] # Templates, variables, vault files, etc.
Navigate to the day's directory:
cd Day-09-Playbooks/Run the playbook:
ansible-playbook site.yamlOr with explicit configuration:
ansible-playbook -i inventory site.yaml| Day | Topic | Description |
|---|---|---|
| Day 01 | Introduction to Ansible | What is Ansible, architecture, use cases |
| Day 02 | Lab Environment Setup | VirtualBox and Vagrant basics |
| Day 03 | Ansible Lab with VirtualBox | Creating test environments |
| Day 04 | Vagrant Lab Creation | Automated VM provisioning |
| Day 05 | Installing Ansible | Installation on various Linux distros |
| Day 06 | Deploying Ansible | Configuration and first commands |
| Day 07 | Managing Inventory | Static and dynamic inventory files |
| Day | Topic | Description |
|---|---|---|
| Day 08 | Ad-Hoc Commands | Quick one-liner automation |
| Day 09 | Playbooks Fundamentals | YAML, plays, tasks, and structure |
| Day 10 | Privilege Management | Remote users, become, sudo |
| Day 11 | Finding Modules | Module documentation and discovery |
| Day 12 | Managing Variables | Variable basics and scopes |
| Day 13 | Extra Variables | Runtime variables with -e flag |
| Day 14 | Host & Group Variables | Organizing variables with host_vars and group_vars |
| Day | Topic | Description |
|---|---|---|
| Day 15 | Variable Arrays | Lists, dictionaries, and complex data |
| Day 16 | Registered Variables | Capturing task output |
| Day 17 | Ansible Facts | System information gathering |
| Day 18 | Custom Facts | Creating custom local facts |
| Day 19 | Magic Variables | Built-in variables (hostvars, groups, etc.) |
| Day 20 | Ansible Vault | Encrypting sensitive data |
| Day 21 | Using Secrets | Vault in production playbooks |
| Day | Topic | Description |
|---|---|---|
| Day 22 | Loops | Iterating with loop, with_items |
| Day 23 | Conditionals | When statements and logic |
| Day 24 | Handlers | Event-driven task execution |
| Day 25 | Task Failure Handling | Error handling and recovery |
| Day 26 | Blocks | Grouping tasks with rescue/always |
| Day 27 | Jinja2 Templates | Dynamic file generation |
| Day 28 | Roles | Organizing playbooks into reusable components |
| Day | Topic | Description |
|---|---|---|
| Day 29 | Parallelism | Serial execution, forks, strategies |
| Day 30 | Host Patterns | Advanced inventory targeting |
Practical examples demonstrating real automation scenarios:
- Use Case: Ansible Variables - Variable management patterns
- Use Case: Calling Roles with Variables - Role parameterization
- Use Case: Collect Host Information - Gathering and reporting system data
- Use Case: Modify JSON/YAML - Data manipulation techniques
- Use Case: Advanced Vault - Complex secrets management
Best for: Complete control, offline work, resource-intensive testing
# Install VirtualBox and Vagrant, then:
vagrant init ubuntu/focal64
vagrant upCovered in: Days 2-4
Best for: Production-like environments, team collaboration
- AWS EC2, Azure VMs, Google Compute Engine
- DigitalOcean Droplets, Linode instances
- Use free tier options for learning
Best for: Lightweight testing, quick iterations
docker run -d --name ansible-node1 ubuntu:20.04Best for: Windows users wanting Linux experience
Install WSL2, then install Ansible within your Linux distribution.
git clone https://github.com/ginigangadharan/30-Days-of-Ansible-Bootcamp.git
cd 30-Days-of-Ansible-Bootcamp# On Ubuntu/Debian
sudo apt update
sudo apt install ansible
# On RHEL/CentOS/Fedora
sudo dnf install ansible
# Using pip
pip3 install ansibleansible-galaxy collection install -r requirements.ymlcd Day-04-Create-Ansible-Lab-using-Vagrant-and-VirtualBox/
vagrant upcd Day-01-Introduction-to-Ansible/
cat README.mdThroughout this bootcamp, you'll learn industry best practices:
- β Idempotency: Write playbooks that can run multiple times safely
- β FQCN: Use Fully Qualified Collection Names (ansible.builtin.*)
- β Variables: Proper scoping and organization
- β Security: Ansible Vault for secrets management
- β Error Handling: Graceful failure management
- β Roles: Modular, reusable automation code
- β Testing: Syntax checks and validation
- β Documentation: Self-documenting playbooks
Contributions are welcome! Here's how you can help:
- Report Issues: Found a bug or error? Open an issue
- Suggest Improvements: Have ideas? Share them in discussions
- Submit Pull Requests:
- Fix typos or errors
- Add examples or use cases
- Improve documentation
- Share Your Experience: Star β the repo if you find it helpful
- Follow the existing structure and style
- Test playbooks before submitting
- Update READMEs to match code changes
- Keep examples beginner-friendly
This project is licensed under the MIT License - see the LICENSE file for details.
Gineesh Madapparambath
- YouTube: techbeatly
- Blog: techbeatly.com
- GitHub: @ginigangadharan
If you find this bootcamp helpful:
- β Star this repository
- πΊ Subscribe to techbeatly YouTube Channel
- π Enable notifications for new videos
- π¬ Share with others learning Ansible
- π Report issues to help improve the content
After completing all 30 days:
- Build a real-world automation project using what you've learned
- Share your project (optional) with the community
- Consider contributing back to this repository with your use cases
- 30 Days of structured learning
- 30+ Playbooks ready to run
- 5 Real-world use cases
- 100% Free and open source
Happy Learning! π
Remember: The best way to learn Ansible is by doing. Don't just read - experiment, break things, fix them, and build real automation!
