/Automation

Network Programability & Automation links

Network Programmability & Automation

Light the New World

2019/09/25 12:01 GMT+10:00

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

September update

various tweaks

teaser

overview on moving to automation on network

Linux Cheat Sheet:

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

Network automation blogs:

Network automation training:

Cisco Network Programmability and DevOps

Cisco has jumped into automation in a big way. Some of these links are possibly dead but just look around on learninglabs.cisco.com and developer.cisco.com.

Cisco Training & Certification for Network Programmability

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]

Python

Starting to play with Python before commiting:

Installing 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.

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.

Check the validity of your YAML and errors + get a nice clean UTF-8 version of it.

JSON

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

YANG - Data Modeling Language.

Postman

API testing and use... 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.

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:

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: