/Automation

Network Programability & Automation links

Network Programmability & Automation

Light the New World

2017.03.06

This was put together as a form of tracking my path through the network automation jungle. The choice of tools to learn is mostly environment based and as most of the customers I work for are Cisco based with a mix of firewalls/loadbalancers I am personally working through Python + netmiko & ciscoconfigparse for simple stuff and will be adding Ansible to the mix. I am using Cisco's VIRL as my test network. VIRL has an API too, it would be nice to able to completely automate the build and configuration of the VIRL test environment...

Originally started as an URL dump and as a GIT practice project. Most comments are cribbed from the source site or https://en.wikipedia.org/wiki/Comparison_of_open-source_configuration_management_software

March update

Trying to cull dead links & new topics.

Feb update

A new year and I'm making this a little more focused dropping Chef, Puppet and Salt.

teaser

Linux Cheat Sheet:

A little UNIX knowledge helps... https://fosswire.com/post/2007/08/unixlinux-command-cheat-sheet/

GIT

Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed & efficiency. [it is hard to get your head wrapped around how git works]

Network automation blogs:

Network automation training:

Cisco Network Programmability and DevOps

Cisco Training & Certification for Network Programmability

Has some (limited) free trial chapters.

Python

Search the O'Reilly website for the free eBooks "A Whirlwind Tour of Python" & "How to Make Mistakes in Python" (worth reading the first chapter or so of Mistakes before installing any version of Python)

more advanced python stuff

Netmiko

An open-source Python library that simplifies SSH management to network devices. The library is based on the Paramiko SSH library.

ciscoconfparse

ciscoconfparse is a Python library, which parses through Cisco IOS-style configurations

TextFSM

TextFSM is a Python module that implements a template based state machine for parsing semi-formatted text.

pip installs: netaddr & ipaddress

IP address & network manipulation

JINJA2

Jinja2 is a full featured template engine for Python.

Trigger

Trigger is a Python framework and suite of tools for interfacing with network devices and managing network configuration and security policy. (similar to netmiko/paramiko? haven't looked deep at this yet and it's not high on the list of things to do)

NAPALM (Network Automation and Programmability Abstraction Layer with Multivendor support)

NAPALM is a Python library that implements a set of functions to interact with different network device Operating Systems using a unified API. Has gone native in Ansible & Salt with offical modules (see notes in doc & on GIThub site).

YAML: YAML Ain't Markup Language

YAML is a human friendly data serialization standard for all programming languages.

JSON

(JavaScript Object Notation) is a lightweight data-interchange format.

YANG - Data Modeling Language.

Postman

Roll your own API... https://www.getpostman.com

Zero to API in 4 Minutes

Blog post covering build your own API uses flask & swagger (python stuff) https://cidrblock.github.io/zero-to-api-in-4-minutes.html

Open-source Configuration Management Software

Good podcasts on these topics on Packet Pushers (list not up to date):

One engineers view of Salt & Ansible, useful for an overview of both:

ANSIBLE

Combines multi-node deployment, ad-hoc task execution, and configuration management in one package. Manages nodes over SSH and requires python (2.4 or later) to be installed on them. Modules work over JSON and standard output and can be written in any language. Uses YAML to express reusable descriptions of systems.

LEARNING LAB:

SALT

Salt started out as a tool for remote server management. As its usage has grown, it has gained a number of extended features, including a more comprehensive mechanism for host configuration. This is a relatively new feature facilitated through the Salt States component. With the traction that Salt has gotten in the last bit, the support for more features and platforms might continue to grow.

LEARNING LAB: uses Vagrant on Virtual Box to setup the lab ie automation in action

##Mixed stuffs:

RBFS (REST based file-server)

RBFS provides a RESTful, JSON based, interface to a file system.

VAGRANT

Vagrant is computer software that creates and configures virtual development environments. It can be seen as a higher-level wrapper around virtualization software such as VirtualBox, VMware, KVM and Linux Containers (LXC), and around configuration management software such as Ansible, Chef, Salt, and Puppet.

VirtualBox

Free equiv to VMware Workstation Pro and you can create desktop shortcuts to start VMs directly

How to hook your VMware Workstation VM and Virtual Box VM together (to manage VIRL devices etc) Sadly won't work with VMware Player...

VMware stuff:

Turnkey Linux

VMs/ISOs/containers for various purposes:

ToDD

A highly extensible framework for distributed capacity and connectivity testing (Testing on Demand....Distributed!)

Front ends

front your own API/montioring/config system?

DJANGO

Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design.

Flask

similar purpose to Django but simpler and included in anaconda by default