Network Programming & Automation (+ Junpr)


In this four (4) day course, you learn about foundational skills as they pertain to network automation and programmability.  The network industry is in the midst of change, and one part of that is the operational models and technologies used to manage and operate networks on a day to day basis.  For over 20 years, the CLI has been the primary means to manage networks.  Going forward, we are starting to see more open and programmable network devices emerge – this means having device APIs not only on network switches, but also on SDN controllers in the form of northbound REST APIs.  In addition, we are also seeing network devices be integrated with existing DevOps automation tools.

This course covers the skills needed to take advantage of these modern network devices and controller systems.  The course is divided into two parts.  Part 1 covers raw concepts and technologies and Part 2 focuses on automating network devices.  Our typical course covers working with Cisco and Arista devices.  This course adds in Juniper devices.


While there are no programming, software/dev, or automation prerequisites, students should have a good grasp on basic networking concepts.

Target Audience

This course is ideal for (1) network engineers looking to ramp up on their automation skills, (2) sysadmins/DevOps professionals looking to automate their network, or a combination of both.

Course Outline

  • Python for Network Engineers
    • Python Interpreter
    • Data Types
    • Conditionals
    • Loops
    • Writing Python Scripts
    • Functions
    • Working with Files
    • Passing Arguments from the Command Line
    • Working with Python Modules/Packages
    • Parsing raw text with TextFSM
    • Using netmiko to communicate to SSH-based devices


  • Working with Git
    • Git Overview
    • Git and GitHub
    • Common Git commands and functions
    • Cloing a Project
    • Creating a git branch
    • Making a Pull Request
  • Continuous Integration for Network Engineers
    • Overview
    • Travis CI
  • Network Device APIs & Libraries
    • Arista Command Explorer
    • Arista eAPI
    • Arista pyeapi
    • Cisco NX-API Sandbox
    • Cisco NX-API
    • Juniper PyEZ (py-junos-eznc)
    • pyntc (multi-vendor Python library)
    • Writing Scripts
    • Data Gathering
    • Configuration Automation
  • Using Ansible for Network Automation
    • Ansible Overview
    • Terminology
    • Device and Network Configuration Templating with Ansible
    • Pushing full network configuration files with Ansible
    • Deeper dive into Ansible (conditionals, iterators, register, variables, check mode, etc.)
    • Vendor Modules (Cisco, Arista, Juniper)
    • Open Source network modules (NAPALM, ntc-ansible, snmp modules, etc.)
    • Roles – Creating Multi-Vendor Network Abstractions
    • Data Gathering & Documentation
    • Dynamic Inventory Scripts
    • Writing custom Ansible modules
    • Ansible Python API
    • Ansible Tower (time permitting)

Time permitting, we also provide an Introduction to Flask and build a lightweight web application to execute Ansible modules and playbooks.

With over 10 hours of labs (25+ labs) in this course, come prepared to learn, share, and automate!