thierolf.org - Vom Hirn ins Terminal seit 1998.

Learning material for network automation

I’m strongly interested in Network Automation, therefore I’ve compiled a list of learning material I am using for my studies. Most of the learning material is for Cisco, because this is the hardware I am working with and I have at home lab.

I’m pretty sure I am missing a lot of things here, so please let me know if there are additional books, videos, courses or API, etc. for this topic. I’m happy to add those here as well (with credit)

My Python and Network Automation books

Books

O’Reilly: Introducing Python

This book is my “entry” book into the Python programming language. The book covers the topics:

O’Reilly: Python Cookbook, 3rd Edition

In addition to the “entry” book the cookbook provides solutions for various topics. It covers:

Rheinwerk: Python 3 Das umfassende Handbuch

A Python reference book in German, including introduction and description of the standard library, advanced topics like web development with Django, GUI with tkinter and PyQt and a lot of tips and tricks.

O’Reilly: Network Programmability and Automation

Python programming basics for network engineers, introduction to APIs, templates, automation, continuous integration. Topics covered:

Packt: Mastering Python Networking - Third Edition

The “bible” for network automation with Python. In my opinion “Mastering Python Networking” should be a standard or reference book for network automation.

Videos & Postcasts

Cisco NetDevOps Live!

Cisco’s weekly webinar series about network automation.

David Bombal - YouTube channel

CCNA, Network Automation, Python, Linux, Software Defined Networking and so on

Packet Pushers Heavy Networking

Weekly podcast about network technology

Online Courses

Cisco DevNet Tracks

Cisco’s learning labs for DevNet, programming and networking

API, Libraries & Tools

napalm

NAPALM (Network Automation and Programmability Abstraction Layer with Multivendor support) is a Python library that implements a set of functions to interact with different router vendor devices using a unified API.

pexpect

Pexpect is a pure Python module for spawning child applications; controlling them; and responding to expected patterns in their output. Pexpect works like Don Libes’ Expect. Pexpect allows your script to spawn a child application and control it as if a human were typing commands.

netmiko

Multi-vendor library to simplify Paramiko SSH connections to network devices

paramiko

Paramiko is a Python (2.7, 3.4+) implementation of the SSHv2 protocol, providing both client and server functionality. While it leverages a Python C extension for low level cryptography (Cryptography), Paramiko itself is a pure Python interface around SSH networking concepts.

nornir

Nornir is a pure Python automation framework intented to be used directly from Python. While most automation frameworks use their own Domain Specific Language (DSL) which you use to describe what you want to have done, Nornir lets you control everything from Python.

pyATS

pyATS is an end-to-end DevOps automation ecosystem. Agnostic by design, pyATS enable network engineers to automate their day-to-day DevOps activities, perform stateful validation of their device operational status, build a safety-net of scalable, data-driven and reusable tests around their network, and visualize everything in a modern, easy to use dashboard.