eNMS

Build Status Coverage Status

Introduction

eNMS is an open source web application designed to help automate networks graphically.

eNMS

It encompasses the following aspects of network automation:

While network automation traditionally requires scripting skills, eNMS provides a way to automate networks graphically, in a few simple steps:

1. Network creation

Nodes and links can be created either one by one by specifying all properties manually, or all at once by importing an Excel spreadsheet. Once created, all objects are displayed in a sortable and searchable table, from which they can be edited and deleted.

The dashboard provides a graphical overview of all objects with dynamic charts.

Object creation

Try it out yourself: Object management, Dashboard

Relevant part of the doc: Object creation

2. Network visualization

Two visualizations are proposed:

Views can be filtered to display only a subset of the network. A filter is a combination of values (or regular expressions) for each property: it defines whether an object should be displayed or not.

You can display the property of an object from both views, and start an SSH session to a device.

In the following example, we create a first filter with the regular expression france|spain for location to filter all objects that are not in France or in Spain, and a second filter with the value IOS-XR for Operating System to filter all nodes that do not have the IOS-XR operating system. We use these filters on both views, then start an SSH session to one of the router.

Network GIS visualization

Try it out yourself (double-click on a node to display its properties): Geographical view, Logical view, Filters

Relevant parts of the doc: Geographical view, Logical view, Filters, Bindings

3. Creation of scripts and workflows

The following types of script can be created:

Scripts can be combined to form a workflow. A workflow is a directed graph which vertices are scripts. There are two types of edge in a workflow: success edge and failure edge. The success edge (resp. failure edge) indicates which path to follow in the graph if the source script was successfully executed (resp. failed).

In the following example, we create a workflow to configure a VRF on Cisco IOS. Our workflow is made of 4 scripts:

Workflow creation

Try it out yourself: Script creation, Script management, VRF configuration workflow (double-click on a script to display its properties)

Relevant parts of the doc: Scripts, Workflows, OS upgrade workflow,

4. Scheduling

Once a script / workflow has been created, a task can be scheduled from the graphical view. The targets are selected graphically. Filters can be used to schedule a task on a specific subset of device.

The following parameters are available:

In the following example, we schedule the configure_vrf workflow created at the previous step. All scheduling fields are left empty: the workflow is executed immediately. The scripts of the workflow are executed one by one, except for NAPALM Rollback as the validation step does not fail.

Workflow creation

Try it out yourself (Scheduling button): Geographical view, Logical view, Calendar

Relevant part of the doc: Scheduling

5. Comparison of the results

The results of a periodic task can be compared between two different times, devices or tasks. eNMS displays a dynamic line-by-line diff of the outputs.

In the following example, we schedule two periodic tasks:

We can see in the comparison how counters increase through time for both tasks.

Workflow creation

Try it out yourself: Task management

Relevant part of the doc: Task results

Miscellaneous

Getting started

(Optional) Set up a virtual environment

1. Get the code

git clone https://github.com/afourmy/eNMS.git
cd eNMS

2. Install requirements

pip install -r requirements.txt

3. Set the FLASK_APP environment variable

(Windows) set FLASK_APP=enms.py
(Unix) export FLASK_APP=enms.py

4. Run the application

flask run --host=0.0.0.0

5. Go the http://127.0.0.1:5000/

6. Create an account and log in

Run eNMS in a docker container

1. Download & run the container

docker run -d -p 5000:5000 --name enms --restart always afourmy/enms

2. Go to http://127.0.0.1:5000

3. Create an account and log in

Contact

For any feedback, advice, feature request, join us on the Network to Code slack (channel #enms)

Other projects you might be interested in