(5 Days)


No two networks are the same! Regardless, your network can be automated with a powerful combination of Python and Ansible across all major (and most minor) network vendors. Lessons and labs focus on using both Python and Ansible to interact with and configure your network devices. At the conclusion of this course you will return to work empowered with skills necessary to automate network management! This class is a combination of live demonstrations and hands-on labs with virtual network devices and endpoints as targets for your configuration.

Audience Profile

      Network Administrators

      Ansible Developers

      Python Developers

      Administrators interested in Automation

      Individuals interested in devops, specifically for networking


      Python Basics 

      Coding experience in another language serves as an adequate prerequisite

At Course Completion

      Version controlling code with Git

      Open SSH sessions and pass commands to remote servers

      Remotely open CLI to network devices

      Move files via SFTP

      Overview of Ansible modules

      Ansible collections for network automation

      Custom Ansible modules with Python

      Best practices for automating the management and configuration of network devices

Course Outline

Day 01

Python Basics Review

         Overview of Python and Ansible

         Python whitespace rules & best practices

         Conditional expressions

         Relational and Boolean operators

         Lists, Tuples, Dictionaries

         Indexing and slicing

         Built-in functions

         Writing custom functions

         Getting at methods

         Iterating with Loops (for and while)

         Working with files

         Software Control Management (SCM) (Git, Github, Bitbucket,

           Cloudshare, etc.)

         Getting at RESTful interfaces with Python

         Working with JSON

         Python, Ansible and Paramiko

         Using Paramiko to SSH with keys and passwords



Day 02

Python and Network Automation

         RESTful API review

         API keys

         Paramiko Review

         Using Paramiko to SFTP with keys and passwords

         Introduction to Netmiko (automating routers and switches)

         Using Netmiko to send commands to / from network devices

         Working with YAML

         Converting JSON to YAML with Python


Day 03

Basic Ansible Review

         Ansible keywords

         YAML and JSON for data exchange

         Ansible and YAML

         Ansible Playbook components

         Tying together Python and Ansible – Using Python within Ansible

         Ansible Network Modules

         What is new in Ansible (most current updates / release notes)

         Network Agnostic modules

         Writing network playbooks

         Reviewing the construction of network playbooks

         Writing Ansible playbooks that respond to network failures


Day 04

Blending Python and Ansible Skillsets

         Review how to use Python within Ansible

         Calling Python scripts with Ansible

         Jinja2 Templating Engine for Python (and Ansible)

         Using Templates in Ansible playbooks

         Jinja2 filters, looping, and other useful tricks for automating with Ansible

         Playbook tagging for selective runs

         When to use Python and when to use Ansible

         “Big Picture” options for using Python & Ansible within your Network

         Ansible Roles

         Extending Ansible to support Palo Alto (Optional – Case Study)

         Extending Ansible to support Juniper vendor modules (Optional –

           Case Study)
         Extending Ansible to support NAPALM (Optional – Case Study)



Day 05

Customizing Ansible with Python

         Review – Running Scripts with Ansible

         Prompting for Ansible user input

         Ansible Galaxy & Getting at Roles

         Writing a custom Ansible Module with Python

         Ansible “Engine” vs Ansible “Tower” – marketing hype, capabilities,

           costs, etc.

         Case Study: Automate your Enterprise Network

         When to use Python and when to use Ansible

         Writing your own Ansible modules in Python

         “Big Picture” options for using Python & Ansible within your Network

         Overview – NETCONF / YANG and what they mean for Python and Ansible

         Molecule – Testing your roles



  1. Using vim
  2. Using & Installing Python
  3. Making a Github account
  4. Data within mixed lists
  5. Understanding More about Lists
  6. Python Dictionaries
  7. Getting dir(obj) help() and pydoc
  8. Copying Files and Folders
  9. Moving and Renaming Files and Folders
  10. IPv4 Testing with if
  11. Paramiko – SSH with RSA Keys
  12. Paramiko – SFTP with UN and PW
  13. Space APIs the Final Frontier
  14. More APIs – Final Frontier is Vast
  15. Interaction with APIs – NASA 01
  16. Interaction with APIs – NASA 02
  17. Install GNS3
  18. Setup for GNS networking
  19. Configure the Switches
  20. Running Netmiko
  21. Running your first Playbook
  22. Debug Module
  23. Playbook Prompts
  24. register and when
  25. EOS Get Config and Archive
  26. Agnostic Network Modules
  27. Network Playbook Error Handling
  28. Network Playbook Precheck
  29. Network Playbooks with Roles and Rollbacks
  30. Securing Playbooks with Vault
  31. Network Playbooks, Set Fact, and Fail
  32. Debug, Loops, and YAML Lists
  33. Running a script with Ansible
  34. Jinja Filters
  35. Ansible, Python Methods, and Jinja Filters
  36. Ansible and APIs
  37. Python and Ansible
  38. Writing an Ansible Module with Python
  39. AWX Tower
  40. Molecule – Testing Roles