Understanding EOS Software Download Options

This post is to help explain the different Software Download options for a particular EOS release. For recommendations on which train or version of EOS you should use, please take a look at our Software Lifecycle, and Recommended Release pages. This advice only concerns images located in the Active and Support Only Releases folder. Images from the Other Releases and EFT folders are not for general use. Those releases are available only for specific deployments, and should only be used when specifically recommended by Arista. In this case, I’m taking a look at EOS-4.17.1F and you can see from the...
Continue reading →

Deploying Virtual SAN Over L2/L3 Networks with Arista Networking Devices

This is a great posting from on how to deploy Virtual SANs over an Arista underlay networks with the actual switch configurations. Here is the video on how to automate the deployment of a VSAN infrastructure from the same blog – VMware Virtual SAN Stretched Cluster Automated Deployments with PowerCLI Thought our user community would benefit from these blog postings. Happy reading!    

Introduction to Managing EOS Devices – Memory Utilisation

A common question that users new to EOS have is concerning the high levels of memory utilisation seen on Arista switches (~70% utilised). Typically this is first flagged by the NMS and triggers a low memory warning or alarm. Unlike a traditional switching OS, EOS uses Linux page caching. Most free memory is used as a live cache and very low ‘free memory’  numbers are entirely normal, providing that enough memory is available from the buffers and cached memory for applications demanding more RAM. In this case, the OS is capable of freeing up memory from cache as processes demand it. Memory...
Continue reading →

Upgrade Questions for EOS

We are about to upgrade our Arista switches to address the newest vulnerabilities that came out recently, and I have a few questions I’m hoping you can help with. Some of our switches are on older hardware. Is there a table somewhere that lists the highest code level a particular platform can run? Will all newer code releases run on all older hardware? Some of our switches are running very old code. Does SSU work on very old code (say, 4.5)? Assuming not, what is the upgrade path to get these switches up to 4.14…? Do I have to upgrade...
Continue reading →

Script to update EOS in sw’s in a bulk

Hi We want to upgrade EOS in sw’s. We want to automate this process. We can use solarwinds to execute a script or a phython script to do it. If someone can provide with template for it so we can test it in a lab sw and use it in production.   Thanks Raj  

Installing Puppet on EOS

Getting started with Puppet and EOS isn’t a difficult process. It involves taking advantage of the extensible nature of EOS. There are two primary extensions that need to be loaded in EOS in order for an Arista network element to be included in the Puppet ecosystem. Installation Installation of the agent on a switch includes adding the Ruby Client for eAPI (rbeapi) and the Puppet agent extensions, basic management configuration, including hostname, domain, and time synchronization (for SSL certificate management), and enabling eAPI access to the switch. Additionally, the Puppet master needs the appropriate modules installed (NetDev_stdlib and EOS) so you...
Continue reading →

Arista’s EOS Innovation Enabling Ecosystem Partner Software Development

Network software automation and intelligence is a passion we share as network engineering software developers at Intelligent Visibility, Inc. Creating innovative software solutions in the rising world of software-defined networking (SDN) can prove challenging. The source data that we require for our software is mostly located within the network device’s operating system. In the past accessing this source data has been a serious time investment mainly due to inconsistent API implementation types across different operating systems for many different hardware platforms.

How to keep last X startup configs

If you would like to keep track of last 10 (or more, or less) configuration changes, here’s the event-handler code to do that: event-handler config-versioning    trigger on-startup-config action bash FN=/mnt/flash/startup-config; LFN="`ls -1 $FN.*-* | tail -n 1`"; if [ -z "$LFN" -o -n "`diff -I 'last modified' $FN $LFN`" ]; then cp $FN $FN.`date +%Y%m%d-%H%M%S`; ls -1r $FN.*-* | tail -n +11 | xargs -I % rm %; fi    delay 0 Description: Every time the startup config gets changed, this event handler will be executed (“trigger on-startup-config”). You could increase the delay, if you wish, but now it’s engaged immediately...
Continue reading →

Fabric Visibility

A leaf and spine fabric is challenging to monitor. The fabric spreads traffic across all the switches and links in order to maximize bandwidth. Unlike traditional hierarchical network designs, where a small number of links can be monitored to provide visibility, a leaf and spine network has no special links or switches where running CLI commands or attaching a probe would provide visibility. Even if it were possible to attach probes, the effective bandwidth of a leaf and spine network can be as high as a Petabit/second, well beyond the capabilities of current generation monitoring tools. The 2 minute video...
Continue reading →

Fan Failure String Status Question

Hi, Sorry for this weird request, but I am looking to know the exact string that EOS will give me in an show environment all command results output? <Snippet from show environmental all – all fans good in this case.> Airflow: front-to-back Fan Tray         Status           Speed ---------------- --------------- ------ 1                Ok                 46% 2                Ok                 46% 3                Ok                 46% 4                Ok                 46% 5                Ok                 46% 6                Ok                 46% Thank you much in advance! Mike

Recommended Minimum EOS Release API?

Arista does a great job posting the Recommended Minimum EOS Release versions however it requires partner level access (the information I have found thus far). I would like to programmatically access this information and I was hoping that Arista might have this information in a RestFUL API or at a minimum a public web link? Any help is appreciated.   Thank you again, Mike Cotrone

Automating the collection of system logs using logGrab

Typically when a support case is opened the first item requested by the support engineer is more data.  If all necessary data can be provided when a support case is opened it allows the support engineer to immediately begin looking at a customer issue, however it is often difficult to know exactly which information will be required.  logGrab aims to simplify this complexity by automating the process reducing the typical time to resolution of service requests. logGrab is a simple bash script, when executed it collects all data typically required by TAC engineers and places it into a single timestamped ZIP...
Continue reading →

Virtual Machines in EOS

How-to implement virtual machines in Arista EOS Virtualization was first developed in the 1960s and used to partition mainframe hardware to improve utilization. Today, virtualization has many meanings and widely implemented on a variety of platforms. Arista EOS leveraging it’s unmodified Linux kernel and embracing open source standards based technology has brought the concept of operating system virtualization to Ethernet switching. The approach that Arista has taken is to utilize Kernel-based Vitual Machines (KVM). Turning the Linux kernel into a hypervisor by loading a kernel module which provides the core virtualization infrastructure, a processor specific module (Intel or AMD) which...
Continue reading →

Running Arista vEOS inside VMware Workstation

Arista EOS is released as a single image that supports all of our platforms. That same single image can even be run in a virtual machine! This video describes how to set up a virtual machine in order to test EOS functionality, or to develop and test your own extensions.  

Intelligent Bootstrap with Arista EOS and ZTPServer

Many customers inquire about how to get started with automation into their operational networks. These conversations tend to revolve around how to reduce the operational expense and risk associated with managing data center networks. In most cases, the general consensus leads to starting automation around the bootstrap process or, in other words, how to find a better way to introduce consistency and agility into the deployment process.  Arista’s early heritage grew from solving real world operational problems that enhance our customers ability to deliver massively scalable data center networks efficiently. Throughout the development process EOS has provided innovative solutions that...
Continue reading →

Where to download Across

Can you help point out the download location of software “Across” required to generate EOS kernel source code? Many thanks! I didn’t find its download location with Google or on Arista web site. Error when generating source code: Installing EosKernel-2.6.38.8.Ar-1945438.EOS41281.src.rpm error: Failed build dependencies: Across is needed by EosKernel-2.6.38.8.Ar-1945438.EOS41281.x86_64

Running a Guest VM on EOS

Introduction One of the key features of Arista EOS is its Extensibility. (that is what the E in EOS stands for.) Many people already love that EOS is based on unmodified Linux kernel and basically runs a subset of Fedora Linux (as of writing, Fedora Core 14). To anyone familiar with Unix or Linux an Arista switch basically looks like a Linux server with lots of ethernet interfaces: switch>enable switch#bash Arista Networks EOS shell [admin@switch ~]$ uname -a Linux switch 2.6.32.28.Ar-957380.EOS4104gaurav #1 SMP PREEMPT Sat Nov 3 13:07:31 PDT 2012 x86_64 x86_64 x86_64 GNU/Linux [admin@switch ~]$ ifconfig -a cpu Link encap:Ethernet HWaddr 00:1C:73:19:F6:46...
Continue reading →

Securing EOS CLI

Objective This Tech Tip is intended to provide Arista EOS users with the configuration guidelines and best practices to enable secure management plane protocols according to IT industry security standards. It is not the objective of this document to set the foundations or rules of a company security policy or a password policy. Note: This document is not intended to set company security or password policy. Ultimate responsible to define and apply an end-to-end IT security policy is the responsibility of the end user and must take into account any regulations directly related with company activities. Arista EOS includes a wide...
Continue reading →

How do I enable configure commands via HTTP API?

I'm working with a 7050s which has the http interface enabled and I am able to post non-privileged show commands and receive successful json output (e.g. show interfaces).  However, when I attempt to execute a command that requires configuration mode the command fails with the error message: ' 'configure' failed: invalid command.'   Executing 'show privilege' from the client indicates that the privilege level is 1, and so I assumed that by assigning the default privilege of 15 to the user that the configure command would be successful.  After adding a user: username newuser privilege 15 secret 0 ######  role...
Continue reading →

Packaging and installing EOS extensions

EOS follows the Fedora model of packaging and distributing software as RPMs. EOS extensions can be packaged either as normal RPMs, or as a bundle of RPMs called a SWIX. Creating an EOS extension as an RPM A standard RPM can be used for packaging EOS extensions. Documentation on how to build an RPM can be found in the rpmbuild man page, on the rpm.org website at http://www.rpm.org/wiki/Docs, or on the Fedora Project Wiki at http://fedoraproject.org/wiki/How_to_create_an_RPM_package. The following example shows a quick way to create an RPM extension for a fixed set of files, in this case a script called MyTestExtension...
Continue reading →

How to collect interface statistics from bash

Watch interface counters, update interval 10 second (defined by the -n flag): [user@Arista ~]$watch -n 10 "FastCli -c 'show int e1 count rates'" Note: This command can also be run from the CLI: Arista#watch 10 show int e1 count rates Watch interface counters, update interval 10 second & highlight differences (defined by the -d flag): [user@Arista ~]$ bash watch -d -n 10 "FastCli -c 'sh int e1 count rates'" Note: This command can also be run from the CLI: Arista#watch 10 diff show int e1 count rates Collect the interface names and the corresponding IP addresses (for all interfaces) to a...
Continue reading →

Debugging EOS agents

EOS’s architecture is built around the notion of agents. While the CLI show commands offer some great insights into the operational status of the switch, there is deeper level of detail that can be gathered from the agents by using a EOS debugging feature called agent tracing. Through this feature, which delivers live debug output to the CLI, EOS provides extensive troubleshooting information and enables users to debug complex control plane or protocol layer interactions. To configure agent tracing, first check the list of available agents. For example, in order to see the list of all agent starting with ‘A’, use: Arista#show trace...
Continue reading →

How to store and view previous contents of ‘show tech-support’

Introduction Starting with EOS 4.8.1, Arista introduced a unique feature called CLI Scheduler. Besides helping with troubleshooting and debugging Arista switches, this feature is used in order to automatically save the last 100 outputs of show tech-support (taken every hour). Please see an Arista EOS Manual for further details on the CLI Scheduler. Scheduling a show tech-support command The schedule command facilitates the periodic execution of a specified CLI command. Command parameters can be used in order to configure: the interval between consecutive executions of the command the maximum number of log files to be saved Starting with 4.8.1, by default, the...
Continue reading →

SSH login without password

This article describes how you can configure your switch with a pre-shared SSH key from a host. 1. Create the user account on the switch   Arista(config)#username <user> privilege 15 secret <secret password> 2. Generate SSH key files on the SSH client host. If you already have the SSH key files, skip to step 3. <host>$ssh-keygen -t dsa -f testkey Generating public/private dsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in testkey. Your public key has been saved in testkey.pub. The key fingerprint is: 38:dd:3a:68:ea:36:f1:9b:fa:69:ba:43:38:2f:98:f0 fred@HOST1.yourdomain.local The key's randomart image...
Continue reading →

Email client configuration in EOS

This article covers the configuration and use of email in Arista EOS. 1) Configuring Email Arista switches can be configured as email clients and can be used to send email alerts through event handlers (which trigger an action when a certain event happens, for example when an interface goes down). This capability is in addition to the other management and monitoring methods available in EOS. Email can also be used from the CLI, as a convenient way to retrieve information for support. EOS email supports both TLS and SMTP authentication. Arista(config)#email Arista(config-email)#? auth Email account authentication from-user Send email from...
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.8 stars.2 open issues.Recent commits: Update README.md, GitHub Add unix socket support, Philip DiLeo...
Continue reading →

Linux as a Switch Operating System: Five Lessons Learned

Arista spent the last nine years building a switch operating system based on Linux, including nearly six years of field experience. Here are five lessons we learned along the way. Lesson 1. It’s okay to leave the door unlocked. We weren’t the first to put Linux on a switch, but we were the first to leave it open. By “open”, I mean that an administrator can get a root shell on the switch, with access to all of the standard Linux tools from awk to zip. A few naysayers believed that customers would run with scissors, hurt themselves, and blame...
Continue reading →

Understanding EOS CLI implementation

This document gives an overview of the some of the APIs used for developing CLI Plugins. Although it tries to be as complete as possible, it only focuses on the most common APIs used by the CLI Plugins and it is not an exhaustive description of all the interfaces. The document is relevant for EOS version 4.12.0, although parts of the document might also apply to older releases. “Hello world!” example TestCli.py # Copyright(c)2013 AristaNetworks,Inc. All rights reserved. # Arista Networks, Inc. Confidential and Proprietary. import BasicCli import CliParser from CliModel import Model # Model ­ only required for eAPI...
Continue reading →

Reacting to syslog-triggered events

EOS in tandem with Python scripting can provide the network operator an invaluable tool that is driven by local log entries on the switch. The script presented here continuously monitors /var/log/messages for new entries as it contains verbose, unfiltered entries. The script then searches each log entry using the built-in Python regular expression module. When a matching entry is found (this script is looking for major errors) it saves the output of ‘show tech-support’ to internal flash. For every match, the script checks for the existence of a ‘show tech-support’ file to ensure it doesn’t create a duplicate entry for...
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.

How to generate syslog messages using Python

Arista EOS extensions can be easily configured to generate syslog messages. This documents provides an overview of the APIs which can be used in order to achieve that and shows a few examples. The examples presented in the following sections were tested against EOS-4.12.0. Basic example #!/usr/bin/env python # Copyright (c) 2013 Arista Networks, Inc. All rights reserved. # Arista Networks, Inc. Confidential and Proprietary. import syslog syslog.openlog( 'myTestLog', 0, syslog.LOG_LOCAL4 ) syslog.syslog( '%%TEST-6-LOG: Log msg: %s' % 'test msg' ) Result Apr 17 07:15:40 <hostname> myTestLog: %TEST-6-LOG: Log msg: test msg See the official Python documentation for more details.

Which is the mount point in Sysdb for static routes?

I am trying to use SysDb with python to create a route. e.g. I want to have route for subnet 10.0.0.0/24 with next hop on 192.0.0.1. But I am not able to find a correct mount point to be able to do this. It will be great if someone can help me get this correct.