Monday, May 21, 2018

eNMS v2: a web-based app to automate your network graphically with netmiko/napalm/ansible workflows

A few months ago, I've shared here the first version of eNMS. In case you've missed it, the idea was to implement a web-based GUI for the most commonly used libraries for network automation, namely Netmiko (both for pulling data and configuring a device), and NAPALM (data retrieval with NAPALM getters, and configuration management with NAPALM load/commit/rollback functions).

I've been working on it actively for the past few months and I'm glad to release a new version: eNMS 2.0 (github)

The most significant changes are:

  • eNMS now supports sending Ansible playbooks.

  • The introduction of workflows. Scripts (netmiko, napalm or ansible scripts) can be combined together to form a "graph of scripts". Rather than a long explanation, here are two examples (double-click on a script to find out what it does): a workflow using Netmiko configuration and file transfer functions to perform an OS upgrade, and another workflow combining NAPALM and Netmiko to commit a configuration, run some checks afterwards and rollback if the state of the device is not what's expected.

  • Before, network visualization (display the network on a world map or via a force-directed drawing algorithm) and network automation (scheduling netmiko/napalm scripts) were independent features. Now, all the automation is done graphically, i.e you can schedule a script/workflow by selecting the target devices directly from the graphical view (from the world map, or the force-based graph drawing).

  • A task can be scheduled to run a command periodically and store the outputs of a command in the database. eNMS then creates a line-by-line diff of the outputs between any two versions. You all know network configuration backup tools like Rancid and Oxidized: eNMS can do the same thing, but for virtually any command.

Check out the github readme where I provide a step-by-step explanation of the process (network creation, visualization, script and workflow creation, and graphical scheduling) with a video for each step. At each step, the readme also links to the online demo where you can try everything I've described by yourself.

Note: Works for any OS (windows/linux/mac), any version of python from 2.7 to 3.6. Contributions are most welcome ! We are on the networktocode Slack, channel #enms if you have questions, requests, want to contribute or simply discuss the project.

Other useful links: Online demo, Documentation



No comments:

Post a Comment