NetAuto Academy

NAPALM for Network Engineers

Why NAPALM? Vendor-Neutral Network State

Advanced11 min read

What you'll learn

  • The exact problem NAPALM solves: normalized state, not orchestration
  • How NAPALM differs from Netmiko (vendor-specific CLI) and Nornir (execution/orchestration)
  • That NAPALM is not another automation runner
  • Where this module's boundary sits: NAPALM alone, not nornir_napalm
🎓 Teach This Lesson

Listen to a guided explanation of this lesson.

Spoken narration isn't supported in this browser.

A different question

Every device this curriculum has automated — since Netmiko Fundamentals — has spoken Cisco IOS. Netmiko sent IOS show/config commands over SSH. Nornir ran those same IOS-specific commands, concurrently, across many hosts. Neither ever had to answer: what if the next device isn't Cisco?

Two different questions, not two versions of the same question

Netmiko and Nornir both answer "how do I execute operations?" — one connection at a time, or many at once. NAPALM answers a completely different question: "how do I read and change network state through one normalized API, regardless of vendor?" It is not a faster Netmiko, not a replacement for Nornir, and not another way to run tasks.

Quick checkConcept check
What question does NAPALM answer that Netmiko and Nornir don't?

The concrete problem

Without NAPALM — vendor-specific CLI
  1. Cisco IOSshow interfaces -- Cisco-specific text
  2. Juniper Junosshow interfaces terse -- different command, different text
  3. Arista EOSshow interfaces -- same command name, still different text
  4. Three parsers to write and maintain
With NAPALM — one normalized call
  1. driver.get_interfaces()same method, every vendor
  2. Same Python dict shape backis_up, is_enabled, description, speed, ...
  3. One piece of code, three vendors
Quick checkScenario
A team automates Cisco, Juniper, and Arista switches using raw show commands over SSH (Netmiko-style). What has to change per vendor?

Positioned against what this curriculum already taught

  1. Netmiko (Phase 2.7)vendor-specific CLI, one device at a time
  2. Nornir (Phase 3.4)orchestration -- many devices, concurrently, still vendor-specific commands
  3. NAPALM (this module)vendor-neutral state -- one API, normalized results

Not re-taught here

ConnectHandler, send_command, and Netmiko's exceptions (Phase 2.7) are not repeated in this module — only referenced as the vendor-specific-CLI contrast NAPALM's getters replace. InitNornir(), nr.run(), filtering, and Nornir's concurrency (Phase 3.4) are not repeated either. This module teaches NAPALM alone.

Quick checkMyth check
Is NAPALM a replacement for Nornir?
Quick checkPredict output
A get_interfaces() call against a Cisco IOS device and the same call against a Juniper device (hypothetically, if both were real and reachable) return results with:

Key takeaways

  • NAPALM answers a different question than Netmiko or Nornir: not how do I execute, but how do I read/change state through one normalized API across vendors.
  • The concrete problem: the same conceptual show interfaces means three different commands and three different text formats across Cisco, Juniper, and Arista -- NAPALM's get_interfaces() returns one consistent shape instead.
  • Netmiko and Nornir are not re-taught in this module -- only referenced as the vendor-specific-CLI baseline NAPALM's getters replace.
  • nornir_napalm (combining Nornir's orchestration with NAPALM's normalization) is explicitly out of scope here -- it belongs to Multi-vendor Automation, the next planned module.