Ansible 101 - Essentials

Description

Course Overview

Ansible is a powerful IT automation engine used to accelerate DevOps initiatives. It’s an open-source tool that executes repetitive network and system admin tasks. Ansible is used to bring structure and consistency to system deployments, implementations, and changes.

Course Objectives

  • Overview of Ansible and critical modules
  • AI LLM prompt engineering for generating Ansible solutions
  • Ansible collections for content delivery
  • Building roles for code reuse
  • YAML formatting
  • Playbook construction and order of execution
  • Jinja2 templating
  • Static and Dynamic inventory management
  • Credential Management and Encryption with Vault
  • Finding solutions on Ansible Galaxy
  • Version controlling code with Git

Who Should Attend?

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

Course Prerequisites

There are no prerequisites for this course.

Agenda

Ansible Introduction

  • Ansible definition
  • Exploring modules
  • Building a task
  • Places to define Ansible vars
  • hosts aka \"Inventory\"
  • Creating a A play
  • Looking at the “handler”
  • Running a playbook
  • Introduction to YAML
  • Requirements for connecting to remote hosts

Installation

  • Configuration requirements on the control machine
  • Python requirements on the host
  • Using ansible raw to install Python

Ansible Static Inventory

  • Defining Hosts and Groups
  • Host and Group variables
  • Groups of Groups
  • Default Groups

Ansible Tower / AWX

  • What is Ansible Tower and AWX
  • Why you should consider using Jenkins as a replacement for Ansible Tower
  • Pushing and pulling playbooks from GitHub

Roles and Ansible Galaxy

  • Why we need Ansible Roles
  • Role Directory Structure
  • Using Roles
  • Role default variables
  • Converting a Playbook to a Role
  • Exploring Ansible Galaxy
  • Running a role from Ansible Galaxy

YAML

  • YAML Gotchas
  • YAML Dictionary
  • YAML list
  • YAML list of dictionaries
  • YAML Alternate format
  • Relationship to JSON

Ansible Ad hoc commands

  • Ad hoc command syntax
  • Parallel Shell commands
  • Managing packages
  • Managing users and groups
  • Gathering facts
  • ad hoc cheat sheet

Writing a Simple Playbook

  • Elements of a well written playbook
  • A well-written Ansible play
  • Using include files for tasks
  • A well-written ansible variable file
  • A well-written ansible inventory file

Ansible config file and directory structure

  • ansible.cfg
  • Best practices concerning directory structures and organization
  • Host Inventory and ansible_vars
  • Introduction to roles

Playbook Best Practices

  • Directory Layout
  • Use Dynamic Inventory With Clouds
  • How to Differentiate Staging vs Production
  • Group And Host Variables
  • Top Level Playbooks Are Separated By Server Type

Ansible config file and directory structure

  • ansible.cfg
  • Ansible Inventory
  • roles

Server Modules to Know

  • Modules documentation
  • setup / gather_facts
  • copy
  • apt / yum / pip
  • command / shell
  • git
  • get_url
  • debug
  • lineinfile

Jinja2

  • What is Jinja2?
  • Jinja2 variables
  • Jinja2 filters
  • Jinja2 tests
  • How to use templates
  • Review of templates

Conditional and Looping Tasks

  • Variables and Loops
  • Using Complex Variables in Loop
  • Variables and Templates
  • Using variables in conditions
  • Blocks
  • Prompts
  • Getting variables from the system
  • Setting variables in playbooks
  • Registered variables
  • Getting variables from the command line
  • Where is the best source to derive variables values?

Ansible Network Solutions

  • Writing Cisco and Juniper playbooks
  • Modules for Cisco
  • Exploring Juniper solutions
  • Built in Juniper modules
  • Role based Juniper modules
  • Installing a module from Juniper vendor
  • Securing credentials
  • Latest version of Ansible

Dynamic Inventory Management

  • What is Dynamic Inventory?
  • A review of static Inventory Practices
  • Using JSON as an Inventory Source
  • Using YAML as an Inventory Source
  • Pulling Inventory from an API
  • AWS EC2 Example
  • OpenStack Example

OpenStack and AWS

  • Overview of OpenStack
  • Understanding the OpenStack client
  • What is openstack-sdk
  • clouds.yaml
  • Installing openstack-sdk
  • Using openstack-sdk
  • OpenStack modules
  • os_network
  • os_subnet
  • os_router
  • os_server
  • os_server_action
  • os_security_group
  • What is boto?
  • Installing boto for AWS
  • AWS modules
  • ec2
  • aws_s3_bucket_info
  • redshift

Variables and Python

  • Jinja Filters for variable manipulation
  • Using Python within playbooks for variable manipulation
  • Best practices for Variables
  • Securing credentials with Ansible Vault
  • Encrypting Playbooks with Ansible Vault

Similar courses