Multi-vendor Automation
Why Multi-vendor Automation Is Hard, and How nornir_napalm Closes the Gap
What you'll learn
- The exact capability missing after Nornir and NAPALM individually
- What nornir_napalm actually is: a thin plugin, not a new framework
- The real, verified list of nornir_napalm's task functions
- What this module does and does not cover from that list
Listen to a guided explanation of this lesson.
Spoken narration isn't supported in this browser.
Two capabilities, still not connected
Two different axes, still separate
Nornir (Phase 3.4) answers "how do I execute operations across many devices?" NAPALM (Phase 3.5) answers "how do I read/change state through one normalized API?" Neither module ever connected the two -- every Nornir task in Phase 3.4 ran vendor-specific commands; every NAPALM example in Phase 3.5 talked to exactly one device by hand.
- Cisco scriptNetmiko or NAPALM's IOS driver, by hand
- Arista scripta different driver, by hand
- Juniper scriptyet another driver, by hand
- Three code paths, three loops to maintain
- One Nornir inventoryeach host lists its own platform
- One nr.run(task=napalm_get, ...)same call, every host
- One code path, any number of vendors
nornir_napalm: a real, thin plugin -- not a new framework
nornir_napalm.plugins.connections
nornir_napalm.plugins.tasks.napalm_cli
nornir_napalm.plugins.tasks.napalm_configure
nornir_napalm.plugins.tasks.napalm_confirm_commit
nornir_napalm.plugins.tasks.napalm_get
nornir_napalm.plugins.tasks.napalm_ping
nornir_napalm.plugins.tasks.napalm_rollback
nornir_napalm.plugins.tasks.napalm_validateReal, verified via pkgutil.walk_packages against the installed package -- one connection plugin, seven task functions. Nothing hidden, nothing larger than this.
This module's actual scope, stated honestly
Of these seven tasks, this module covers exactly two in depth: napalm_get (Lesson 3) and napalm_configure (Lesson 4). napalm_cli, napalm_ping, napalm_rollback, napalm_confirm_commit, and napalm_validate are real and confirmed to exist, but are not separate lessons here -- covering all seven would turn this module into a catalog rather than teaching the one capability that matters: composition.
Verified compatible, not assumed
pip install nornir==3.6.0 napalm==5.2.0 nornir-netmiko==1.0.1
pip install nornir_napalm
# pip list afterward:
# nornir 3.6.0 <- unchanged
# napalm 5.2.0 <- unchanged
# nornir_napalm 0.6.0 <- newVerified directly in an isolated environment: nornir_napalm installs cleanly alongside the exact Nornir and NAPALM versions already used in Phase 3.4/3.5, with no version changes to either.
Key takeaways
- The missing capability, precisely: running one normalized operation across a fleet where different hosts are different vendors -- neither Nornir nor NAPALM alone does this.
- nornir_napalm is a real, thin plugin -- one connection plugin, seven task functions -- verified directly from the installed package, not a new framework.
- This module covers exactly two of those seven tasks in depth (napalm_get, napalm_configure) -- the rest are real but explicitly out of scope, to avoid becoming a catalog.
- nornir==3.6.0, napalm==5.2.0, and nornir_napalm==0.6.0 install and coexist cleanly -- verified directly, no version changes to existing dependencies.