Introducing Arista EOS Roles for Ansible

This article introduces the newly released Arista EOS role for Ansible.  The Arista EOS role provides a set of Ansible modules that can used in playbooks for automating the configuration of network resources contained in Arista EOS nodes.  The EOS role replaces the existing arista_* modules that are currently available in the Ansible distribution.  The base code that comprises the EOS role has been re-worked from the beginning, influenced by lessons learned from the first generation modules.   In addition, the EOS role now takes advantage of Ansible Galaxy to provide a streamlined distribution mechanism to make getting started with...
Continue reading →

BGP Multipath

BGP Multipath allows multiple next-hop entries for the same prefix to be installed in the routing table. This enables the load sharing of traffic, providing Equal Cost Multi-Pathing (ECMP) functionality. By default, BGP Multipath is disabled and the path selection algorithm will continue until one path is preferred. To enable the BGP Multipath option, the following must be configured under the BGP process: maximum-paths paths [ecmp ecmp_paths] paths  – maximum number of parallel routes in the routing table. Default value is 1. ecmp_paths – maximum number of ECMP paths stored in the forwarding table for each route. Default is maximum value. Value for...
Continue reading →

Working with the Python eAPI Client

This article builds on the Introduction to the Python Client for eAPI by taking a look at the pyeapi client a little deeper.  The client module provides a number of functions for making it easier to build connectivity to Arista EOS nodes running eAPI. To get started, lets begin by simply importing the pyeapi client in Python and review the how to build a node object. >>> import pyeapi >>> node = pyeapi.connect_to('veos01') As discussed in the introduction article, the above will search for and load the eapi.conf file.  Once the configuration file has been found and loaded by pyeapi,...
Continue reading →

Introducing the Python Client for eAPI (pyeapi)

The Arista EOS command API (eAPI) has been available in versions of EOS since the release of version 4.12.  It has proven to be an invaluable tool for building management plane applications, making it easy to develop solutions that interface with the device configuration and state information.  Building on the capabilities of eAPI, this article introduces the initial release of the Python Client for eAPI (pyeapi). The Python Client for eAPI (pyeapi) is a language specific client to make working eAPI even easier.  It is designed to assist network engineers, operators and devops teams to build eAPI applications faster without...
Continue reading →

Remote Port Health Manager

Overview: Remote Port Health Manager (rphm) monitors interface counters on one or more EOS devices.  It will send an SNMP trap to a management station whenever one of those counters increases at a rate greater than the defined threshold.  Further, rphm is easily extensible so other actions could be added. Example uses include: I want to know when one of my critical ports gets more than N number of CRC errors during a window of time. Am I receiving excessive rxPause frames from certain paths, and if so, when? When is there a burst in broadcast or multicast packets being transmitted from a...
Continue reading →

Collecting logs for Arista TAC cases using logGrab

logGrab is a simple bash script that builds a time/date stamped archive containing a number of log items commonly requested when raising a TAC case. It is designed to simplify the process of collecting data from multiple sources within EOS and packing them into a single file for easy upload. The script can be easily extended/adapted and may be integrated easily with other EOS features such as the CLI scheduler and Advanced Event Manager. #!/bin/bash # logGrab - Automatic Log Collector v0.3 LOGNAME=logGrab-$HOSTNAME-$(date +%Y-%m-%d.%H%M%S) mkdir /mnt/flash/$LOGNAME cd /mnt/flash/$LOGNAME ls -alR /persist/sys > persist-sys-contents ls -alR /mnt/flash > flash-contents ls -alR...
Continue reading →

Programmatically update your routing table

Overview This article describes a script which is designed to allow the insertion/removal of a route in/from the routing table. If you want a way to remotely add/delete routes to/from your routing table, then this is the tool for you – using it will make insertion/removal of static routes as easy as running a script on any remote device that supports Python. How to get the code: Download the code Use your Github account and fork it (remember to contribute back) Installation The script (updateRoute) can be run/installed on any device that runs Python 2.7 or later. In order to run updateRoute, first...
Continue reading →

Dynamically update your interface name via port auto-description

Overview: Port auto-description will dynamically update the port description based on the LLDP information received from the neighbour. As always we are looking for your feedback please let us know if you have ideas on how to improve this script or other ideas… The tool: The script, called ‘portAuto’, will dynamically change the port description based on the neighbour’s LLDP information. This could be used as a stand alone script or part of a larger toolset. How to get the code: Get the code directly from Github https://github.com/arista-eosext/PortAutoDescription4 forks.2 open issues.Recent commits: Update README.md, GitHub Add unix socket support, Philip DiLeo Update...
Continue reading →

EOS extensions on GitHub

A collection of scripts and examples on how to extend EOS using Python can be found in the following repository on GitHub: arista-eosext13 repositories, 0 followers.