Ansible online course
Home » Courses » Network Automation » Ansible online course
This webinar is not yet part of your subscription, so you can watch only videos or presentations without the lock icon. To watch the whole webinar, add the webinar to your subscription.
Ansible online course
Introduction |
||
47:32 Free items Introduction |
||
When facing a long study process, it makes sense to start with “what are we doing”, “why are we doing it” and “how is the material structured”. This section will give you these answers, and a procedure you can use to set up a simple Ansible test environment. |
||
Introduction | 16:14 | 2020-10-26 |
Webinar Structure and More Information | 14:08 | 2020-10-26 |
Introduction to Ansible Collections | 14:13 | 2020-12-01 |
This video describes the major changes in Ansible packaging and naming of modules, connections, and filters starting in Ansible 2.10. |
||
2:57 Additional resources |
||
Create a Simple Ansible Test Environment | 532K | 2022-02-21 |
Create container-based network automation environment | ||
Running Network Automation Tools in a Container | ||
Sample Ansible-based network automation solutions | ||
Full-blown VLAN-as-a-service solution | ||
Deploying Ansible in Production | 2:57 | 2017-07-02 |
Errata | 174K | 2019-07-29 |
18:58 Case Study: DMVPN Router Configuration Generation and Deployment |
||
One of the simplest network automation use cases is the automated network generation using unified device templates. We’ll illustrate this concept with a DMVPN deployment case study that runs throughout this webinar and includes data model generation, sample device templates, and configuration deployment with Ansible. |
||
Automated DMVPN Deployment Case Study | 2.1M | 2015-08-18 |
Case Study - Introduction | 12:41 | 2015-08-18 |
Case Study - Network Design | 6:17 | 2015-08-18 |
Mastering YAML and Jinja2 |
||
47:28 YAML and JSON |
||
YAML is the data presentation language used extensively by Ansible playbooks and variable files. JSON is the presentation language used between Ansible and external components. It obviously makes sense to be familiar with both, and you’ll have to understand the basics of YAML to write your playbooks. |
||
Introduction to YAML and JSON | 15:54 | 2017-03-07 |
Scalar values in YAML and JSON | 8:24 | 2017-03-07 |
Simple lists and dictionaries | 9:44 | 2017-03-07 |
Complex Data Types | 13:26 | 2017-03-07 |
Additional resources |
||
YAML and JSON Hands-On Exercises | 160K | 2018-10-19 |
Slide deck | 2.2M | 2016-11-17 |
Source code for YAML Examples | ||
Online YAML validator | ||
26:15 Case Study: Building the Data Model with YAML |
||
The second step in any automated service (or infrastructure) deployment should be a well thought-out data model (the first one should be a service definition). This section describes how you can generate a typical data model, or extract it from sample router configurations, and write it as a series of YAML files that can be used by Ansible playbooks. |
||
Building the Data Model | 8:32 | 2015-08-18 |
Case Study - Data Model for DMVPN Network | 10:07 | 2015-08-18 |
Case Study - DMVPN Data Model in YAML | 7:36 | 2015-08-18 |
Source code for DMVPN case study | ||
1:20:47 Free items Jinja2 - the Templating Tool Used by Ansible |
||
You might think you’d need a templating tool only when generating device (or service or software) configuration from templates. Not true - Ansible uses Jinja2 extensively, from evaluating expressions to specifying conditions, and finally generating text files from templates. Without understanding Jinja2 you’ll have a hard time understanding even moderately complex Ansible playbooks. |
||
Introduction to Jinja2 | 14:40 | 2017-03-07 |
Complex Data Objects and Loops | 22:15 | 2017-03-07 |
Variables, Macros and Includes | 9:59 | 2017-03-07 |
Python Methods in Jinja2 | 6:08 | 2017-03-07 |
IP Address Handling | 13:49 | 2019-09-02 |
Whitespace Handling in Jinja2 | 13:56 | 2018-01-31 |
Errata and New Features |
||
Changes introduced with Jinja 2.9 and Python 3 | 1.5K | 2021-01-30 |
Additional resources |
||
Jinja2 Hands-On Exercises | 430K | 2018-10-19 |
Slide deck | 7.7M | 2019-09-02 |
Use FOR-IF Construct in Jinja2 Loops | ||
Source code for Jinja2 Examples | ||
Dockerfile for Jinja2 renderer script | ||
Lightweight YAML/Jinja2 parser with web UI | ||
More hands-on exercises |
||
Additional and contributed hands-on exercises | ||
14:18 Case Study: Creating Device Configurations with Jinja2 Templates |
||
Next step in our case study: after building a data model describing our DMVPN deployment, we’ll create Jinja2 templates that will be used to create device configurations. |
||
Case Study - Preparing Configuration Templates | 6:05 | 2015-08-18 |
Case Study - DMVPN Configuration Templates in Jinja2 | 8:13 | 2015-08-18 |
Source code for DMVPN case study | ||
Ansible and Ansible playbooks |
||
1:02:49 Free items Using Ansible |
||
Finally it’s time to get our hands dirty and do some real automation work. You’ll learn about Ansible inventory, authentication mechanisms, Ansible modules, and the basics of Ansible playbooks - just enough to generate device configurations from templates or execute simple commands on network devices. |
||
Introduction to Ansible | 23:28 | 2016-12-08 |
Ansible Playbooks | 22:19 | 2016-12-08 |
Caveat: Using registered variables with conditional task execution | 3.1K | 2018-12-30 |
Generating Configurations from Jinja2 Templates | 13:29 | 2016-12-08 |
Case Study - Building Router Configurations with Ansible | 3:33 | 2015-08-18 |
Additional resources |
||
Review questions | 198K | 2017-05-29 |
Slide deck | 3.2M | 2016-12-05 |
Source code for examples used in this section | ||
3:12:50 Ansible Deeper Dive |
||
Ready for some headier Ansible stuff? Let’s explore the details of Ansible facts and variables, play and task execution (including error handling), implementing loops, working with files, and using exotic Jinja2 filters. |
||
1:41:19 Inventory and Variables |
||
Ansible Inventory Format | 18:15 | 2020-10-14 |
Inventory Variables and Sources | 18:52 | 2020-10-14 |
Inventory Variables Deep Dive | 13:23 | 2020-10-14 |
Play and Task Variables | 9:48 | 2020-10-14 |
Registered Facts and Extra Variables | 11:06 | 2020-10-14 |
Fact Caching and Troubleshooting | 15:17 | 2020-10-14 |
Special Variables | 14:38 | 2020-10-16 |
Additional Features and Errata | 1.5K | 2021-01-30 |
Using Variables — Ansible Community Documentation | ||
Special Variables — Ansible Community Documentation | ||
1:02:51 Play and Task Execution |
||
Play and Task Execution | 10:04 | 2016-12-08 |
Controlling where tasks run: delegation and local actions — Ansible Community Documentation | ||
Error Handling in Ansible Playbooks | 6:27 | 2016-12-08 |
Error handling in playbooks — Ansible Community Documentation | ||
Loops in Ansible Playbooks | 21:10 | 2019-02-08 |
Loops — Ansible Community Documentation | ||
Tracking Changes in Ansible Playbooks | 13:21 | 2017-07-25 |
Using Check Mode for Dry Runs | 11:49 | 2017-07-25 |
Validating tasks: check mode and diff mode — Ansible Community Documentation | ||
Additional Features and Errata | 3.0K | 2021-01-30 |
28:40 Other Interesting Topics |
||
Working with Files | 17:59 | 2017-01-10 |
Exotic Jinja2 Filters | 10:41 | 2017-01-10 |
Using filters to manipulate data — Ansible Community Documentation | ||
Additional resources |
||
Review questions and Hands-On Challenges | 227K | 2017-07-25 |
Slide deck | 16M | 2020-10-14 |
Source code for examples used in this section | ||
2:03:15 Ansible Networking Modules - Executing Commands |
||
It’s time to work with real network devices. You’ll learn how to log into network devices, execute commands on them, and get device facts and operational data. |
||
20:53 Ansible Networking Modules Overview |
||
Read This First: Another Set of Changes in Ansible Networking Modules | 1.4K | 2021-01-30 |
Ansible Networking Modules Introduction | 11:34 | 2019-08-07 |
Generic Networking Modules | 9:19 | 2019-08-07 |
35:04 Connecting and Authenticating |
||
Connecting to Network Devices | 20:17 | 2019-08-07 |
Authenticating Ansible User on Network Devices | 14:47 | 2019-08-07 |
Slide Deck | 2.1M | 2019-01-23 |
34:20 Executing Commands |
||
Executing Commands on Network Devices | 25:08 | 2019-08-07 |
Multi-Platform Command Execution | 9:12 | 2019-08-07 |
Slide deck: Executing Commands | 3.3M | 2019-01-23 |
Source code for Executing Commands presentation | ||
32:58 Simple Command-Based Playbooks |
||
Collect Printouts | 14:58 | 2019-10-05 |
Check Software Version | 9:08 | 2019-10-05 |
Check Connectivity | 8:52 | 2019-10-05 |
Slide deck: Simple Command-Based Playbooks | 2.1M | 2019-02-13 |
Source code for Command-Based Playbooks presentation | ||
Additional resources |
||
Review Questions and Hands-On Challenges | 208K | 2018-01-31 |
Vagrantfile and VIRL Topology used in this section | ||
Network modules debugging and troubleshooting guide | ||
1:47:10 Ansible Networking Modules - Managing Configurations |
||
After managing read-only access to network devices, let’s change device configurations. We’ll cover simple configuration changes, declarative intent modules, and deploying full-blown configuration files. |
||
Managing Network Device Configurations with Ansible | 9:54 | 2019-10-05 |
Simple Configuration Changes | 11:32 | 2019-10-05 |
Hierarchical Configurations | 10:12 | 2019-10-05 |
Order-Sensitive Configuration Objects | 10:12 | 2019-10-05 |
Deploying Configurations from Files | 17:23 | 2019-10-29 |
Slide deck | 24M | 2019-03-11 |
Source code for configuration management examples | ||
24:30 Other Device Configuration Tasks |
||
Gathering and Comparing Configurations | 12:14 | 2019-10-29 |
Replacing Configurations | 6:31 | 2019-10-29 |
Saving Running Configuration | 5:45 | 2019-10-29 |
Source code for "configuration replace" functionality | ||
23:27 Declarative Configuration Modules |
||
Declarative Configuration Modules | 15:14 | 2019-10-29 |
Improving Performance of Declarative Configuration | 8:13 | 2019-10-29 |
Slide Deck | 2.7M | 2019-03-17 |
Source code for declarative configuration modules | ||
Recommended further reading |
||
How wrong indent combined with Ansible networking modules can trash your device configuration (by Patrick Ogenstad) | ||
Additional resources |
||
Vagrantfile and VIRL Topology used in this section | ||
Review Questions and Hands-On Challenges | 247K | 2017-06-06 |
1:19:32 Creating Reusable Code |
||
You want to reuse excellent bits of your code in multiple projects and package them as ready-to-use libraries, right? Let’s dig deeper into:
|
||
Play and Task Imports | 12:27 | 2021-01-27 |
Dynamic Task Includes | 15:06 | 2021-01-27 |
Ansible Roles | 20:00 | 2021-01-27 |
Importing and Including Roles | 9:47 | 2021-01-27 |
Ansible Collections | 22:12 | 2021-01-27 |
Additional resources |
||
Review Questions | 156K | 2017-07-12 |
Slide deck | 1.8M | 2021-01-27 |
Sample playbooks for Ansible 'include' functionality | ||
Ansible roles examples | ||
Using Ansible roles to build DMVPN router configurations | ||
Further reading |
||
Using Ansible roles to manage large-scale infrastructure | ||
49:24 Extending Ansible |
||
Ansible is a powerful tool, but it shouldn’t be used as a generic-purpose programming language, so don’t try to use it as a Swiss Army Chainsaw - complex tasks should be implemented with a real programming language using Ansible callbacks, modules, external components, or (simplest possible option) Jinja2 filters and tests. |
||
Extending Ansible | 9:13 | 2017-03-07 |
Dynamic Inventory and Hosts | 10:15 | 2017-03-07 |
Callback Plugins | 9:05 | 2017-03-07 |
Jinja2 Filters and Tests | 20:51 | 2017-03-07 |
Additional Plugin and Callback Features | 1.3K | 2021-01-30 |
Additional resources |
||
Review Questions and Hands-On Exercises | 167K | 2017-07-13 |
Slide deck | 1.8M | 2017-03-07 |
Sample playbook using roles | ||
Sample Jinja2 filters | ||
Ansible Custom Inventory Plugin - a hands-on, quick start guide | ||
46:23 Debugging Ansible Playbooks |
||
Debugging Ansible playbooks and Jinja2 templates and expressions could turn into an excruciating experience. The guidelines and hints you'll get in this section will make your debugging process easier and faster. |
||
Debugging Ansible Playbooks | 15:40 | 2017-11-07 |
Snapshot Ansible Variables | 8:52 | 2017-11-07 |
Debugging Jinja2 Templates | 9:28 | 2017-11-07 |
Common Pitfalls | 12:23 | 2017-11-07 |
Slide Deck | 2.5M | 2017-11-08 |
Using NAPALM with Ansible |
||
1:01:01 Using NAPALM with Ansible |
||
Ansible includes low-level network device modules - you have to use a different module for every vendor or operating system. NAPALM provides an abstraction library that gives you a uniform interface to device configurations, operational data, and even fully-automated device state validation… with an easy-to-use set of Ansible modules. |
||
What Is NAPALM | 19:10 | 2018-04-17 |
NAPALM Ansible Modules | 14:33 | 2018-04-17 |
Fully-Automated Verification | 11:25 | 2018-04-17 |
Hands-On Examples and Playbooks | 15:53 | 2018-04-17 |
Additional resources |
||
Slide deck | 583K | 2017-05-21 |
Source code for examples used in this section | ||
33:00 Validation Network Device State with NAPALM |
||
NAPALM includes state validation functionality that compares the actual state of a network device (as retrieved with NAPALM getters) with the desired state defined in a YAML file and reports the discrepancies. The same functionaliy can be used independently or from within an Ansible playbook. |
||
Introduction to Deployment Validation with NAPALM | 3:46 | 2018-05-11 |
NAPALM Validation Overview | 12:21 | 2018-05-11 |
Using NAPALM-based Deployment Validations with Ansible | 16:53 | 2018-05-11 |
Slide deck | 20M | 2018-02-02 |
Source code for examples used in this section | ||
Examples and Case Studies |
||
47:09 Sample Ansible Playbooks |
||
This section contains sample Ansible playbooks. Every subsection has a video explanation, optional writeup in PDF format, and link to the source code. |
||
15:19 Collect SSH keys from managed devices |
||
Collect SSH Keys | 15:19 | 2017-07-14 |
Source code for Ansible playbook | ||
VIRL topology used in this example | ||
12:49 Store Device Configurations to Git Repository |
||
Store Device Configurations to Git Repository | 12:49 | 2017-07-14 |
Source code for Ansible playbook | ||
VIRL topology used in this example | ||
19:01 Generate network topology graph from LLDP neighbor information |
||
Create Network Diagram from LLDP Neighbor Information | 19:01 | 2017-07-14 |
Source code for Ansible playbooks | ||
Vagrant-based Arista EOS lab used in this example | ||
1:12:41 WAN Services Deployment Case Study |
||
This case study describes WAN services deployment process including:
|
||
Case study introduction | 3:14 | 2017-07-14 |
Create Device Data Model from Infrastructure Data Model | 23:30 | 2017-07-14 |
In the data model part of the case study you'll learn:
|
||
Validate Fabric Connectivity | 22:56 | 2017-07-14 |
After building the network-centric data model, we'll use it to validate fabric connectivity using information gathered with LLDP. You'll also learn how to translate data models on-the-fly within an Ansible playbook. |
||
Configure and Validate OSPF Routing | 23:01 | 2017-07-14 |
In the final part of the case study, we'll build OSPF configurations, figure out what changes they would cause on the fabric devices, deploy them, and finally verify that OSPF routing process sees the expected neighbors on fabric links. |
||
Additional resources |
||
Source code for data model and fabric connectivity videos | ||
1:23:27 Free items Case Study: Building Data Center Fabrics |
||
Real-life case study presented by Dinesh Dutt (Chief Scientist @ Cumulus Networks) demonstrates how you can use network automation to build and validate a data center fabric. | ||
Challenges of Data Center Fabric Deployments | 20:02 | 2017-01-24 |
Separate Data from Code | 12:56 | 2017-01-24 |
Ansible Tips and Tricks | 9:19 | 2017-01-24 |
Validation | 12:51 | 2017-01-24 |
Staging and Production | 11:10 | 2017-01-24 |
Fabric Deployment Demo | 17:09 | 2017-01-24 |
Additional resources |
||
Slide deck | 1.6M | 2017-01-24 |
Source code for examples used in this section | ||
42:29 Case Study: Abstract Everything |
||
In this case study David Barroso (author of NAPALM) explains how to use NAPALM to abstract platform differences and vendor-specific APIs. Last step in his presentation: move from device-by-device view of the network to an infrastructure-and-services data model. | ||
Template Multi-Vendor Deployments | 8:52 | 2017-07-21 |
Abstract Vendor API | 8:42 | 2017-07-21 |
Automate Everything | 6:35 | 2017-07-21 |
Abstract Everything | 18:20 | 2017-07-21 |
Additional resources |
||
Slide deck | 4.1M | 2016-11-18 |
Source code for examples used in this section | ||
Reference material |
||
More Ansible Playbooks |
||
This section contains sample Ansible playbooks from ipSpace.net GitHub repositories. |
||
Extract DHCP pools from Cisco IOS routers or switches | ||
Configure DHCP pools and cleanup stale entries | ||
Extract network topology (including network graph) from interface Description-to-Links | ||
Create a fabric data model from interface descriptions | ||
Create and deploy DMVPN configurations on Cisco IOS routers | ||
Deploy approved configurations from Git repository to candidate configurations on network devices | ||
Simple compliance check framework | ||
Create device uptime report from SNMP facts | ||
Transform infrastructure data model into device-focused data model | ||
Configure and verify OSPF neighbors | ||
Configure and verify BGP neighbors | ||
Configure VRFs and VPNv4 address families from list of customer services | ||
Reference: Building a networking automation lab |
||
This section contains links to various documents describing how you can build your own network automation lab using either physical or virtual devices. |
||
Build Your Own Automation Lab | ||
This document should help you get started - it discusses numerous lab setup options, including sample lab setups created by attendees of our network automation course. |
||
Running Ansible in a Vagrant-controlled Virtual Machine | ||
Vagrant uses poorly-documented internal virtual networks. This document describes the various ways of establishing connectivity between Ansible running in a Vagrant-controlled virtual machine and other virtual machines controlled by the Vagrant instance. |
||
Create Ansible Inventory Files from Vagrant SSH Configuration | ||
This simple tool creates Ansible inventory files from Vagrant port forwarding printouts and supports running Ansible on the host or in a Vagrant-controlled VM. Highly recommended when running Vagrant with VirtualBox. |
||
Sample Vagrant-based topologies |
||
Vagrant-controlled Ansible VM used with VIRL | ||
Vagrant-controlled Ansible and Juniper vSRX VMs used with VIRL | ||
Arista vEOS leaf-and-spine topology | ||
Other useful links |
||
This section contains a collection of links you might find useful when building your own lab in a non-standard way. Note: you're on your own ;) |
||
Creating your own IOS-XR Vagrant box | ||
Building your own CSR1000v Vagrant box | ||
Using The Libvirt Provider With Vagrant | ||
Cisco CSR 1000v Vagrant Libvirt Box Install | ||
Cisco IOSv Vagrant Libvirt Box Install | ||
Cisco IOSXRv Vagrant Libvirt Box Install | ||
Solutions for Hands-On Exercises |
||
Solutions for YAML and JSON Hands-On Exercises | 238K | 2017-06-27 |
Solutions for Jinja2 Hands-On Exercises | 705K | 2017-06-29 |
Solutions for additional hands-on exercises available on GitHub | 1.5K | 2017-09-10 |
25:20 Free items Reference: What is network automation |
||
What is network automation and what are the common caveats and roadblock? Spend half an hour to find out. | ||
What is Network Automation | 18:08 | 2017-02-06 |
Network Automation Roadblocks | 7:12 | 2017-02-06 |
1:08:49 Free items Reference: Hierarchy of Network Automation |
||
What should you automate in your network? How can you move from a device-by-device approach commonly used in today's networks to a service-oriented network with automated self-service provisioning? This section will give you an overview of what's waiting for you. | ||
Operated Network | 12:58 | 2017-02-06 |
Abstraction of Network State | 12:03 | 2017-02-06 |
Automated Provisioning | 32:13 | 2017-02-06 |
Automated Remediation | 11:35 | 2017-02-06 |
Additional Resources |
||
CLI-versus-API Resources | ||
Network Automation Data Model Optimization | ||
Overview of the 2002 IAB Network Management Workshop (RFC 3535) | ||
20:36:00 Related webinars |
||
Network Automation 101 | 1:48:00 | |
Network Programmability 101 | 46:00 | |
Network Automation Tools | 10:40:00 | |
Network Automation Use Cases | 7:22:00 |