eNMS is a vendor-agnostic NMS designed for building workflow-based network automation solutions.
It encompasses the following aspects of network automation:
Your network topology can be created manually or imported from an external Source of Truth (OpenNMS, LibreNMS, or Netbox). Once created, it is displayed in a sortable and searchable table. A dashboard provides a graphical overview of your network with dynamic charts.
eNMS can display your network on a world map (Google Map or Open Street Map). Each device is displayed at its GPS coordinates. You can click on a device to display its properties, configuration, or start an SSH terminal session. Colocated devices can be grouped into geographical sites (campus, dacacenter, ...), and displayed logically with a force-directed layout.
|Network View||Sites View|
eNMS comes with a number of "default services" leveraging libraries such as
napalm to perform simple automation tasks. However, absolutely any python script can be turned into a service. If your python script takes input parameters, eNMS will automatically generate a form in the web UI.
Services can be combined into a workflow.
eNMS can be used as a device configuration backup tool, like Oxidized/Rancid, with the following features:
|Search Configuration||Compare Configuration|
While services can be run directly and immediately from the UI, you can also schedule them to run at a later time, or periodically by defining a frequency or a CRON expression. All scheduled tasks are displayed in a calendar.
Services can also be executed programmatically:
eNMS has a REST API and a CLI interface that can be used to create, update and delete any type of objects, but also to trigger the execution of a service.
eNMS can be configured as a Syslog server, and rules can be created for syslog messages to trigger the execution of a service.
Install python 3.6+ (earlier versions not supported) git clone https://github.com/afourmy/eNMS.git cd eNMS pip3 install -r build/requirements/requirements.txt export FLASK_APP=app.py flask run --host=0.0.0.0 Log in (default credentials: admin / admin)