This course introduces the participants to Ansible, teaching DevOps tasks through hands-on labs.

Audience: Developers and DevOps personnel who will be using Ansible in their job duties.
Course Duration: 2 days
Prerequisites:

Experience with the terminal environment and vi is helpful but not required.

Course Objectives:
  • Learn what Ansible is and how it compares to other similar technology
  • Know the components of a playbook
  • Understand how to create scripts to provision virtual environments’ various uses
Course Outline:
  • Introduction
    • Why Configuration Management is a Critical Part of Any DevOps Team
    • Strengths and Weaknesses of Ansible
    • How Ansible is Different from Other CM Tools like Chef and Puppet
    • Getting Started with Ansible Terminology
    • Ansible and YML for Describing Your Environments

 

  • Getting Set Up
    • Getting Set Up on a Mac
    • Getting Set Up on Linux
    • Getting Set Up on Windows
    • Testing with Vagrant
    • Using SSH Keys to Connect to Your Target Nodes

 

  • Inventory
    • Basic Inventory Example
    • Hosts and Groups

 

  • Ansible Playbooks
    • A Useful Directory Structure to Keep Your Ansible Code Organized
    • Using GIT to Manage Your Ansible Code
    • A First Look at a Playbook to Install and Configure NTP Time Synchronization

 

  • Provisioners
    • Connecting Ansible to Your Preferred Cloud Provider
      • This Course Generally Uses DigitalOcean
    • Creating a New Server Instance
    • Dynamic inventory
    • Dynamic Inventory on Amazon AWS
    • Mixing Static and Dynamic Inventory

 

  • Highly-Available Infrastructure with Ansible
    • Spec Up Inventory and Host Groups
    • Using Roles
    • Configure the Database Backend
    • Configure the Web Server Front-End
    • Configure a Replicated Filesystem
    • Configure Centralized Logging

 

  • Application Deployments with Ansible
    • Deploying an App from SCM to the Local Vagrant Environment
    • How We Would Deploy that Code to Production Once Tested by QA
    • Updating Our Application
    • How Ansible Compares to Alternatives such as Capistrano

 

  • Docker Containers with Ansible
    • Brief Introduction to Docker
    • The Synergy of Containerization and Automation
    • Using Ansible to Build Docker Containers
    • MySQL Containers
    • Web Application Containers
    • Data Storage Containers

 

  • Testing and Continuous Integration
    • Unit, Integration and Functional Testing
    • Automating Your Testing Using GitHub

 

  • Preparing for Ansible Back at Work
    • Real-World Use Case: Using Ansible to Automate CM and Application Pipelines through Continuous Integration, Release, Deployment and Operations
    • Review of Your Environments and Processes to Evaluate How You Can Best Integrate Ansible’s Configuration Management for Your Own Needs