Network Programming & Automation

Overview

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 Cisco Nexus and Arista switches.

 

Prerequisites

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 from the CLI with TextFSM
    • Using netmiko to communicate with 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
  • Cisco NX-API & Arista eAPI
    • Cisco Nexus NX-API
    • Cisco NX-API Sandbox
    • Arista eAPI
    • Arista Command Explorer
    • Python libraries such as pyeapi (Arista) and pyntc (multi-vendor)
    • 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.)
    • Cisco & Arista feature-specific idempotent modules – we automate VLANs, MLAG, interfaces, VRFs, and much more
    • Open Source multi-vendor network modules such as NAPALM and ntc-ansible modules – we automate system level tasks and manage device configuration in a declarative fashion
    • Roles – Creating Multi-Vendor Network Abstractions
    • Data Gathering & Documentation
    • Dynamic Inventory Scripts
    • Writing custom Ansible modules
    • Ansible Python API (time permitting)
    • Ansible Tower (time permitting)

 

EXTRA: 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!