We did a podcast describing NAPALM, an open-source multi-vendor abstraction library, a while ago, and as the project made significant progress in the meantime, it was time for a short update.
NAPALM started as a library that abstracted the intricacies of network device configuration management. Initially it supported configuration replace and merge; in the meantime, they added support for diffs and rollbacks … on the devices that support those operations (the community developing NAPALM made a conscious decision not to fix vendor omissions).
Sometime after our first podcast NAPALM got a plethora of GET functions that can retrieve BGP information, VLANs, VRFs, interfaces, or LLDP neighbors. They take whatever they can get from the device (from structured data to classical printouts) and reformat the information into a common structured data model, giving you the same information regardless of the platform you’re using.
You might wonder whether they plan to support OpenConfig and of course I asked that same question. The answer is waiting for you in the podcast ;)
The number of platforms supported by NAPALM is steadily increasing, and individual platforms are implemented as plugins stored in separate repositories that can be installed and used independently.
All the platform modules are coming from people who need support for new platforms, and as there was a lot of interest from people who didn’t know where to start David organized a weekend-long hackathon that attracted ~20 developers and resulted in numerous pull requests, some of them already approved and merged
You might be wonder who’s using NAPALM. David recommended browsing through the list of contributors, which include Spotify, CloudFlare and Fastly. We also discussed enterprise options, including commercial support.
Finally, we touched on the commercial aspects: NAPALM is an open-source project hosted on Github and released under Apache license, which means that you can always modify and fork it if you wish. They have no plans to monetize it, but you could always get help via Github issues or #napalm channel in networkToCode Slack team.