Detailed Course Outline
1. Getting Started with Ansible
- IT automation
- What is Ansible?
- Secure Shell (SSH)
- Why Ansible?
- Installing Ansible
- Creating a test environment with QEMU and KVM
- Version control system
- Using Ansible with Git
2. Automating Simple Tasks
- YAML
- Hello Ansible
- Working with playbooks
- Ansible verbosity
- Variables in playbooks
- Creating the Ansible user
- Configuring a basic server
- Installing and configuring a web server
- Publishing a website
- Jinja2 templates
3. Scaling to Multiple Hosts
- Working with inventory files
- Working with variables
- Working with dynamic inventory
- Working with iterates in Ansible
4. Handling Complex Deployment
- Working with the local_action feature
- Delegating a task
- Working with conditionals
- Working with include
- Working with handlers
- Working with roles
- Execution strategies
- Tasks blocks
- The Ansible template - Jinja filters
- Security management
5. Getting Notifications from Ansible
- E-mails
- Nagios
6. Creating a Custom Module
- Using Python modules
- Using bash modules
- Testing modules
7. Debugging and Error Handling
- The check mode
- Indicating differences between files using --diff
- Functional testing in Ansible
- Functional testing using assert
- Testing with tags
- The --skip-tags
- Managing exceptions
- Trigger failure
8. Complex Environments
- Code based on the Git branch
- A single stable branch with multiple folders
- Software distribution strategy
- Preparing the environment
- Deploying a web app with revision control systems
- Deploying a web app with RPM packages
- Building compiled software with RPM packaging
- Deployment strategies
- Optimizations