Mastering Ansible
Course Features
Course Details
Course Description
Mastering Ansible is a step-by-step journey of learning Ansible for configuration management and orchestration. The course is designed as a journey through configuring a realistic application stack from the ground up. Instead of going page-by-page through the Ansible documentation, topics are ordered to align with the growing complexity of our application as we build it up and refactor it. In addition to the core concepts of configuration with Ansible, we spend time on building tools to help us maintain and troubleshoot our application. The goal is to have a workflow where all of the configuration and troubleshooting is done through ansible playbooks that can be committed to a repository and improved over time. The course is divided into 6 sections, starting with initial installation and foundational concepts. Starting in section 3, we build up a sample application environment layer-by-layer, learning a new concept in each lecture. After the application is up and running, we refactor our setup in section 4 with an emphasis on modularity and encapsulation. In section 5, we optimize our code and learn about techniques to reduce the playbook execution time. The course finishes with a final section on troubleshooting and testing. For each lecture, we introduce a new Ansible concept and apply it to our playbooks. For most lectures, we execute the new concept in the demo environment so you can see what the output should look like. In the notes of each lecture, you'll find a link to the relevant documentation pages, along with a snapshot of the codebase at the end of that lecture. This course was built with Ansible version 1.9.3, applied to a 3-tiered web application environment leveraging NGINX, Apache2, Python, and MySQL on Ubuntu Linux servers. We do not cover administering Windows servers in this course. This course is designed as an introduction to Ansible, but also as a guide for engineers interested in configuration management, orchestration, infrastructure-as-code, and devops principles.
What Will I Learn?Execute ad-hoc commands against servers using Ansible
Write Ansible configuration playbooks to deploy a 3-tier web application
Configure Ansible roles with tasks, handlers, files, templates, and default variables
Write operational playbooks to check cluster status and perform a cluster restart.
Optimize Ansible playbooks to reduce playbook execution time.
Test and troubleshoot Ansible playbook execution.
Requirements
You should have a Linux or Mac OS X computer, or access to at lease one Linux virtual machine for installing Ansible.
You'll need a code editor or IDE of your choice.
You'll need a terminal and ssh client for running Ansible against target hosts.
You should have access to 5 Linux servers (bare-metal or virtual machine) if you want to setup the course environment and follow along step-by-step.
You should have a Linux or Mac OS X computer, or access to at lease one Linux virtual machine for installing Ansible.
You'll need a code editor or IDE of your choice.
You'll need a terminal and ssh client for running Ansible against target hosts.
You should have access to 5 Linux servers (bare-metal or virtual machine) if you want to setup the course environment and follow along step-by-step.
Who is the target audience?
The course is designed for students who have little or no experience with Ansible, but are familiar with Linux systems administration concepts.
No programming or previous automation experience is required. If you've never logged into a Linux shell and run commands before,
you will learn the Ansible syntax but you may not understand the 'why' behind the tasks that we configure. We try to explain all systems concept that we cover, but we aren't starting from the beginning with Linux in this course.
Introduction
Introduction
Configuration Management & Orchestration
Preparation
Environment setup
Installation
Foundation
Inventory Pt 1
Inventory Pt 2
Host Selection
Tasks
Plays
Playbook Execution
Foundation Concepts
Playbooks
Playbooks Introduction
Packages: apt
Packages: become
Packages: with_items
Services: service
Support Playbook 1 - Stack Restart
Services: apache2_module, handlers, notify
Files: copy
Application Modules: pip
Files: file
Files: template
Files: lineinfile
Application Modules: mysql_db, mysql_user
Support Playbook 2 - Stack Status: wait_for
Support Playbook 2 - Stack Status: uri, register, fail, when
Playbooks Summary
Playbook Concepts
Modular Configuration with Roles
Roles Overview
Converting to Roles: tasks, handlers
Converting to Roles: files, templates
Site.yml: include
Variables: facts
Variables: defaults
Variables: vars
Variables: with_dict
Selective Removal: shell, register, with_items, when
Variables - continued
Variables: vars_files, group_vars
Variables: vault
External Roles & Galaxy
Variables
Advanced Execution
Advanced Execution Introduction
Removing Unnecessary Steps: gather_facts
Extracting Repetitive Tasks: cache_valid_time
Limiting Execution by Hosts: limit
Limiting Execution by Tasks: tags
Idempotence: changed_when, failed_when
Accelerated Mode and Pipelining
Troubleshooting, Testing & Validation
Troubleshooting Ordering Problems
Jumping to Specific Tasks: list-tasks, step, start-at-task
Retrying Failed Hosts
Syntax-Check & Dry-Run: syntax-check, check
Debugging: debug
Testing Concepts
Appendix
Authentication with SSH Keys
A Brief Overview of YAML
A Brief Overview of Jinja2
Dev Environment with Docker
This course does not have any sections.