• Post category:StudyBullet-16
  • Reading time:18 mins read


100% Hands-On Ansible Training with Beginner to Advanced Level Topics – Using Network Automation SSH, REST API Examples

What you will learn

Master Ansible Network Automation from scratch. No prior coding experience is needed. 100% Hands-on demonstration

Elevate your career as a future-ready Network Automation Engineer, equipped with cutting-edge skills and expertise

REST API Automation using Ansible GET, POST, PUT, PATCH DELETE operation sto Devices

SSH Automation and Leverage TextFSM, NTC templates and PyATS CLI Parsers in Ansible for device configuration Parsing

Learn to use Ansible Network resource modules such as cisco ios_facts, ios_config, ios_comands, ios_interfaces, ios_l3_interfaces, ios_static_routes

Use RegEX Filters in Ansible for custom config parsing

In-depth understanding on Ansible valut for encrypting/decrypting variables and files

Gain Beginner to Advanced knowledge on Ansible Playbook and Task Options

Explore Jinja2 templating for dynamic configuration Generation using host or group variables

Understand ansible Magic Variables, hostvars, play_vars, include_vars, group_vars, host_vars with examples

Learn advanced playbook features such as loops, conditionals, handlers , block, rescue and assert

Lab setup using GNS3 VM and VS Code as the IDE for Playbooks with SSH remote development extension

Utilize Ansible roles and collections for modular and reusable automation.

Implement automation solutions across Network Devices such as routers switches etc

Optimize Ansible playbook strategies and parallelism for faster execution

Ansible’s inventory and configuration file management

Understand Ansible Core vs Community

Create ansible custom modules using Python Script

Ansible include vs improt with task roles and playbooks examples

Ansible task options, play options and debugger

Clear explanation on Ansible’s Variable Precedence

Ansible loops conditionals and exception handling

How to use Ansible’s filter and lookup plugins

How to use Network device resource module for configuration management

REST API Automation using Ansible

Configuration Parsing using Ansible RegEx

Brief Introduction to Ansible automation frameworks such as Ansible AWX

Description

Learn Ansible Automation skills from scratch to an advanced level for automating your Network.

Gain an in-depth understanding of Ansible Playbook and Task Options
For attending this course you don’t need any prior coding experience.

100% Hands-on demonstration of the concepts using Network Automation Usecases


Get Instant Notification of New Courses on our Telegram channel.


The IDE is VS Code and Cisco devices will be used for demonstrating most of the device interactions.(vIOS, IOS-XE)

Below are the topics in high level

  • The course will be starting with how to setup Lab for Ansible Network Automation Practice
  • Install and Setup Ubuntu OS VM for ansible
  • Setup VSCode for SSH remote development
  • Ansible installation in the Python VIrtual Environment
  • Ansible Core and Community difference
  • Inventory and Config file setup
  • YAML File ,Playbook fundamentals and Ansible Lint
  • SSH Keybased Authentication to Cisco devices from Ansible
  • Ansible Vault for encrypting files and variables
  • Demonstration of Ansible Vault ID
  • group_vars and host_vars
  • Handle device specific variables and configurations effectively
  • Explore advanced features of Ansible CLI
  • cisco ios_facts and ios_commands module
  • cisco ios_config module explained in detail
  • Cisco config diff, parent command, before, after, match and replace options
  • ios config backup options
  • Configuration backup and save option
  • Cisco ios resource modules
  • cisco interfaces, l3_interfaces and l2_interfaces resource module
  • cisco ios_user and static_route module
  • CLI Parsers
  • pyATS, ntc_templates and TextFSM Parsers
  • AnsibleΒ  Magic Variables
  • hostvars and play_vars
  • set_fact vs vars explained
  • Ansible Variable precedence explained in detail
  • Ansible filter Plugins
  • default, ternary, dict2items, items2dict filters
  • to_json, from_json, to_yaml, from_yamlΒ  filters
  • zip, combine, map,json_query(using JMES Path) filters
  • ip_address, url and datetime filters
  • list operations and string manipulation using filters
  • RegEX Filters
  • Regex search, find_all and replace filters
  • Jinja2 templates example
  • jinja2 for loop and include option
  • jinja2 in ios_config module
  • embed code in jinja2 template
  • lookup Plugins
  • file lookup, template lookup plugins
  • vars, env and pipe lookup plugins
  • Loops and Conditionals :Β  loops, until and when
  • Play Options
    • ansible play strategies, forks and serial
    • debugger for effective troubleshooting
    • host order, log_path
    • tags and limit option
    • check_mode
  • Task Options
    • delegate_to
    • run_once
    • ignore_erros and failed when
    • changed_when and no_log
  • use handlers and listen option
  • block and rescue for exception handling
  • assert option
  • How to install ansible collections: using galaxy command, requirements file and github
  • How to create roles and add tasks to respective directories
  • Detailed explanation of ansible include vs import
  • include_tasks vs import tasks
  • include_role vs import role
  • import_playbook module
  • how to create ansible custom modules
    • convert facts to csv file using custom module which uses python csv in the backend
    • how to pass module args to custom module
    • how to return data using custom module
  • REST API from Ansible
    • how to use URI Module for REST API
    • YANG Suite introduction
    • REST API from Postman
    • Convert POSTMAN REST request to Ansible URI task
    • Initiate REST – GET, PUT,POST PATCH and DELETE Operations from Ansible
    • How to configure Cisco device using REST API
    • how to save config using rest API
    • Parse config using REST API
  • Extra Learning Topic(AWX)
    • Install AWX in Minikube for learning
    • Basics of Ansible execution environment (Podman)
English
language

Content

Introduction

Introduction
Course Content Walkthrough

Lab Setup

Lab Setup Introduction
Install Ubuntu in VMWare Workstation
Install GNS3 VM in VMWare Player
Install Cisco vIOS in GNS3 VM
Enable Old SSH Key Algorith Support in Ubuntu
Install VSCode
Install WSL Linux
Setup GitHub
Install CSR1000v in GNS3 VM
(Optional)Setup Solar Putty for SSH
Official Software Download Links

Ansible Introduction & Installation

Ansible Introduction
Ansible Installation
Ansible Core vs Community
Ansible Commands

Ansible Configuration and Inventory Files

Ansible Configuration Files
Ansible Inventory
Valid Variable Names in Ansible
Demonstrated Scripts in Zip File

YAML Files, Ansible Playbooks and Ansible Lint

YAML Files
Playbooks
Ansible Lint
Demonstrated Scripts in Zip File

SSH Key Based Authentication and Ansible Vault

SSH Key based Authentication
Ansible Vault – Encrypting Strings
Ansible Vault – Encrypt Files
Pass Vault ID from Config File
Demonstrated Scripts in Zip File

group_vars and host_vars

group_vars
host_vars
Demonstrated Scripts in Zip File

Cisco ios_facts, ios_commands Modules

Cisco ios_facts
Ansible debug Module
ios_command wait for
ios_command prompt
Demonstrated Scripts in Zip File

Cisco ios_config Module

ios backup Options
Config Diff Options
Parent Commands
Nested Parents
Source file
Save Option
Before
After
Match
Replace
Demonstrated Scripts in Zip File

Cisco IOS Resource Modules

Introduction
hostname
interfaces
l3_interfaces
l2_interfaces
ios_user
static_routes
Demonstrated Scripts in Zip File

CLI Parsers

Introduction
PyATS parser
NTC Templates parser
textFSM parser
Demonstrated Scripts in Zip File

Ansible Vars and Facts

Ansible facts
Magic Variables
hostvars
play_vars
include_vars
set_fact
set_fact vs vars
Ansible Variable Precedence Explained
Demonstrated Scripts in Zip File

Ansible Filter Plugins

Introduction
default
ternary
dict2items and items2dict
to_json and to_yaml
from_json and from_yaml
zip
combine
map
list_operations
json_query
ip_address
url
string_manipulation
datetime
Demonstrated Scripts in Zip File

RegEx Filters

Search
find_all
replace
Demonstrated Scripts in Zip File

Jinja2 Templates

Jinja2 Templates
ios_config
template for_loop
jinja2_include
embed_code
Demonstrated Scripts in Zip File

Lookup Plugins

File Lookup
template Lookup
Vars Lookup
env Lookup
Pipe Lookup
Demonstrated Scripts in Zip File

Loops & Conditionals

Loops
Until
When Condition
Demonstrated Scripts in Zip File

Play Options

Strategies
forks and Serials
Debugger
Order
log_path
tags
limit
check_mode
Demonstrated Scripts in Zip File

Task Options

delegate_to
run_once
ignore_errors
failed_when
changed_when
no_log
Demonstrated Scripts in Zip File

Handlers, Block and Assert

handlers and listen option
block and rescue
assert
Demonstrated Scripts in Zip File

Collections & Roles

Collections
Roles
Demonstrated Scripts in Zip File

Include vs Import

include vs import Part1
include vs import Part2
include_role vs import_role
import_playbook
Demonstrated Scripts in Zip File

Custom Modules using Python

Introduction
Create Local Python Script
Create Custom Module
Custom Module Exception Handling
Pass hostvars data to Custom Modules
Demonstrated Scripts in Zip File

REST API using Ansible

YANG Suite introduction
YANG Suite Add device
RESTCONF Introduction
REST API From Postman
GET interfaces
GET full_config
PUT hostname
body_format JSON
POST ip domain name
PATCH route table
DELETE Loopback
Save IOS Config using POST
Demonstrated Scripts in Zip File

More Learnings – AWX Setup in Minikube

awx installation in Minikube
AWX Initial Setup
create Custom Execution Environment