Ansible 301 - Customizing Ansible

Skip to Scheduled Dates

Course Overview

This course is designed to move students beyond Ansible Essentials, and joins Ansible with other DevOps skill sets, including: Python scripting, utilizing Ansible Galaxy, running automated solutions with Jenkins, syncing code with Git and GitHub, continuous integration, debugging / linting, and much more! The lessons are built around current concepts observed within enterprises using Ansible. Class is a combination of lecture by demonstration, coding along with the instructor, and hands-on labs. Students are invited to help customize this course by bringing their own projects, solutions, and ideas to ensure class subjects remain as relevant as possible.

Who Should Attend

  • DevOps Engineers
  • System and Cloud Administrators
  • Network Engineers and Developers
  • Python Developers

Course Objectives

    • Advanced Ansible skills and tools
    • Creating your own collection
    • Writing your own Ansible plugin module or other plugins
    • Playbook and solution architecture including best practices and solutions throughout industry
    • Creating Execution Environments
    • ansible-builder
    • ansible-runner
    • AI LLM prompt engineering for relevant configuration snippets and solutions

Course Outline

Introduction to Environment

  • Running with GitHub
  • Syncing Git and GitHub
  • Cloning repos
  • Commits
  • Push and Pull operations
  • Master and Branches
  • Documenting work
  • Moving HEAD
  • GitHub Desktop for GUIs

Ansible and Jenkins

  • Syncing GitHub Playbooks to Jenkins
  • Running Playbooks with Jenkins
  • Building Jenkins Jobs
  • Jenkins and Plugins to know

Roles and Galaxy

  • Building an Ansible Role
  • Role Testing with Molecule
  • Using a Role within a Playbook (review)
  • Pushing Role to GitHub
  • Syncing Ansible Galaxy to GitHub
  • Making Role Highly Available with Galaxy
  • Updating Roles on Galaxy
  • Documenting Roles

Advanced Ansible

  • Blocks & Rollback
  • Asynchronous Actions and Polling
  • Check Mode (“Dry Run”)
  • Playbook Debugger
  • Delegation, Rolling Updates, and Local Actions
  • Setting the Environment (and Working With Proxies)
  • Working With Language-Specific Version Managers
  • Error Handling In Playbooks
  • Advanced Syntax
  • Working With Plugins
  • Prompts
  • Tags
  • Using Vault in playbooks
  • Start and Step
  • Playbook Keywords
  • Lookups
  • Module defaults

Python Catchup & Review

  • Overview of Python and Ansible
  • Conditional expressions
  • Relational and Boolean operators
  • Using Paramiko to SSH with keys and passwords
  • Python and Jinja templating

Python in Playbooks

  • Using methods within playbooks
  • Python methods vs Jinja2 filters
  • Calling Scripts with Ansible
  • Writing Python Scripts for Customer Environment
  • Returning JSON when our script finishes
  • Ansible callback plugins - returning data other than JSON

Extending the Ansible Library

  • Extending Ansible to support (Your Unsupported Ansible Vendor Here)
  • Galaxy for new Ansible modules
  • GitHub for new Ansible modules

Indexing and slicing

  • Built-in functions
  • Writing custom functions
  • Getting at methods
  • Iterating with Loops (for and while)
  • Working with files
  • Getting at RESTful interfaces with Python
  • Working with JSON
  • Python, Ansible and Paramiko

Creating Ansible Modules

  • Writing a Python Script
  • Adopting a Python Script to function as a Ansible Module
  • Pushing our new module to GitHub
  • Documenting our new module
  • Classes of Ansible Modules available

Ansible and for Enterprise

  • Hiding credentials
  • Using Ansible Vault
  • Collaborating on Playbooks
  • Options for logging results
  • Options for running Ansible Jobs in an Enterprise
  • - Jenkins
  • - Ansible Towew
  • - Logging Results
  • - Rolling Back bad jobs & other jobs

 Back to Course Search

Class Dates & Times

Class times are listed Mountain time

This is a 4-day class

Price (CAD): $3,555.15

Oh Snap!
There are no dates listed.
Please contact us to get something scheduled.