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)
O’Reilly: Introducing Python
This book is my “entry” book into the Python programming language. The book covers the topics:
- Learn simple data types, and basic math and text operations
- Use data-wrangling techniques with Python’s built-in data structures
- Explore Python code structure, including the use of functions
- Write large programs in Python, with modules and packages
- Dive into objects, classes, and other object-oriented features
- Examine storage from flat files to relational databases and NoSQL
- Use Python to build web clients, servers, APIs, and services
- Manage system tasks such as programs, processes, and threads
- Understand the basics of concurrency and network programming
O’Reilly: Python Cookbook, 3rd Edition
In addition to the “entry” book the cookbook provides solutions for various topics. It covers:
- Data Structures and Algorithms, Strings and Text, Numbers, Dates and Times
- Iterators and Generators, Files and I/O, Data Encoding and Processing
- Functions, Classes and Objects, Metaprogramming
- Modules and packages
- Network and Web programming
- Concurrency, Utility Scripting and System Administration
- Testing, Debugging and Exceptions + C Extensions
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.
- Sprachgrundlagen und objektorientierte Programmierung, Reguläre Ausdrücke
- Datums- und Zeitfunktionen
- Webentwicklung mit Django
- Migration von Python 2.x nach 3
O’Reilly: Network Programmability and Automation
Python programming basics for network engineers, introduction to APIs, templates, automation, continuous integration. Topics covered:
- Python programming basics: data types, conditionals, loops, functions, classes and models
- Data formats and models: JSON, XML, YAML and YANG for Networking
- The role of application programming interfaces (APIs) in network Automation
- How Ansible, Salt and StackStorm open source automation tools can be used to automate network devices
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.
- Use Python libraries to interact with your network
- Integrate Ansible 2.8 using Python to control Cisco, Juniper and Arista network devices
- Leverage existing Flask web frameworks to construct high-level APIs
- Learn how to build virtual networks in the AWS and Azure Cloud
- Learn how to use Elastic Stack for network data analysis
- Understand how Jenkins can be used to automatically deploy changes in your network
- Use PyTest and Unittest for Test-Driven Network Development in network engineering with python
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
Cisco DevNet Tracks
Cisco’s learning labs for DevNet, programming and networking
API, Libraries & Tools
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 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.
Multi-vendor library to simplify Paramiko SSH connections to network devices
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 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 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.