Getty Images
So nutzen Sie NAPALM für ein effizientes Netzwerkmanagement
NAPALM ist eine Python-Bibliothek, die sich in Ansible-Module integrieren lässt, Multivendor-Umgebungen unterstützt und das Netzwerkmanagement sowie Automatisierung erleichtert.
Moderne Netzwerke sind eine komplexe Mischung aus Routern, Switches und Access Points, oft von verschiedenen Anbietern, die jeweils ihr eigenes Betriebssystem und ihre spezifischen Funktionen haben. Für Netzwerktechniker kann es schwierig sein, mit diesen Geräten separat zu interagieren, wenn die Netzwerke größer werden.
Eine Möglichkeit, diese Komplexität zu bewältigen, ist die Verwendung von NAPALM (Network Automation and Programmability Abstraction Layer with Multivendor support). NAPALM ist Open Source und eine Python-Bibliothek. Sie stellt Netzwerkadministratoren eine Reihe von Funktionen zur Verfügung, mit denen sie mit Netzwerkgeräten interagieren können. NAPALM verwendet eine Unified API, das heißt, eine API vereint andere APIs von verschiedenen Herstellern.
NAPALM bietet umfangreiche Funktionen zur Automatisierung von Netzwerkaufgaben, zum Beispiel die folgenden:
- Geräteerkennung
- Fehlermanagement
- Konfigurationsverwaltung
- Leistungsüberwachung
Die Bibliothek bietet eine Abstraktionsschicht, die die Konfiguration von Geräten verschiedener Hersteller unabhängig von ihren Befehlen und Syntaxen erleichtert. Ihre Herstellerneutralität erleichtert Netzwerktechnikern das Netzwerkmanagement, und sie verfügt über eine einfache Python-Syntax sowie eine umfassende Dokumentation.
Unternehmen mit Multivendor-Umgebungen bevorzugen oft den Einsatz der NAPALM-Bibliothek. Zu den Vorteilen von NAPALM gehören:
- Unterstützung verschiedener Hersteller (Multivendor Suport): Netzwerktechniker können die einheitliche API von NAPALM verwenden, um Gerätekonfigurationen zu bearbeiten oder abzurufen, ohne sich um Syntax und Befehle kümmern zu müssen.
- Community-gesteuert: NAPALM unterstützt eine zentrale Sammlung von Plug-ins, die von der Community entwickelt wurden, und ist gut dokumentiert.
- Flexibel: NAPALM kann mit bekannten Automatisierungsframeworks wie SaltStack, Ansible und Nautobot integriert werden.
Wie Sie mit NAPALM beginnen
Die neueste Version von NAPALM finden Sie hier.
Zur Installation der Bibliothek sind ein paar Schritte erforderlich.
Erstellen Sie zunächst eine virtuelle Python-Umgebung, in diesem Beispiel NAPALM_DEMO genannt.
Als Zweites installieren Sie die Bibliothek in der virtuellen Umgebung mit dem Befehl pip install napalm.
NAPALM und Python Bindings
Mit Python Bindings kann Python-Code mit Code interagieren, der in anderen Sprachen geschrieben wurde. Dank Python Bindings können Netzwerkingenieure auf einfache und leistungsstarke Weise Skripte zur Automatisierung schreiben und mit Netzwerkgeräten interagieren, wobei sie die Stärken verschiedener Sprachen nutzen können. Durch die Verwendung der Binding-Sprache können Techniker komplexe Aufgaben erledigen, die normalerweise zeitaufwendig und fehleranfällig sind.
In der Branche gibt es viele Python Bindings für Netzwerkgeräte, darunter die folgenden:
- NAPALM
- Paramiko
- Netmiko
Netzwerktechniker wählen Python Bindings auf der Grundlage ihrer Ziele aus, um bestimmte Aufgaben zu erfüllen, zum Beispiel:
- Automatisierung der täglichen Aufgaben im Netzwerk
- Fehlersuche bei Netzwerkproblemen
- Konfigurieren von Netzwerkgeräten
- Sammeln von Netzwerkinformationen
Letztlich geht es darum, den Zeit- und Arbeitsaufwand für die Automatisierung mühsamer Netzwerk-Aufgaben zu reduzieren.
Napalm-Integration mit Ansible
Napalm lässt sich mit gängigen Frameworks wie Nornir, Ansible und Nautobot integrieren.
Für die Ansible-Integration enthält das Plug-in napalm-ansible Module, die NAPALM verwenden, um Daten abzurufen oder Konfigurationen auf Netzwerkgeräten zu ändern.
Gängige Ansible-Module sind die folgenden:
napalm_get_facts: Dieses Modul sammelt Fakten von einem Netzwerkgerät unter Verwendung des Python-Moduls NAPALM.
napalm_install_config: Dieses Modul nimmt eine Dateikonfiguration und lädt sie in ein Gerät, auf dem ein beliebiges von NAPALM unterstütztes Betriebssystem läuft.
napalm_validate: Dieses Modul führt eine Validierung der Bereitstellung über NAPALM durch.
Das Modul napalm_get_facts
Der folgende Codeschnipsel zeigt, wie man mit dem Modul napalm_get_facts Fakten von einem Netzwerkgerät sammelt:
- name: get facts from device
napalm_get_facts:
hostname: '{{ inventory_hostname }}'
username: '{{ user }}'
dev_os: '{{ os }}'
password: '{{ passwd }}'
filter: ['facts']
register: result
Das Modul napalm_install_config
Der nächste Ausschnitt zeigt, wie man mit dem Modul napalm_install_config eine Konfiguration auf einem Netzwerkgerät installiert:
- name: Install Config using Provider
napalm_install_config:
provider: "{{ ios_provider }}"
config_file: '../compiled/{{ inventory_hostname }}/running.conf'
commit_changes: '{{ commit_changes }}'
replace_config: '{{ replace_config }}'
get_diffs: True
diff_file: '../compiled/{{ inventory_hostname }}/diff'
Das Modul napalm_validate
Der letzte Ausschnitt veranschaulicht, wie der Zustand eines Netzwerkgeräts mit Hilfe des Moduls napalm_validate anhand einer vordefinierten Validierungsdatei überprüft werden kann.
- name: GET VALIDATION REPORT
napalm_validate:
username: "{{ un }}"
password: "{{ pwd }}"
hostname: "{{ inventory_hostname }}"
dev_os: "{{ dev_os }}"
validation_file: validate.yml
Das NAPALM Ansible-Plug-in ist ein leistungsstarkes Tool, mit dem Netzwerkadministratoren die Verwaltung von Netzwerkgeräten automatisieren können. Es ist einfach zu bedienen und bietet eine API, die das Schreiben von Ansible Playbooks erleichtert.
Dank der Erweiterbarkeit des Plug-ins können Netzwerkingenieure und Entwickler es um neue Funktionen ergänzen. Zum Beispiel ist es möglich, benutzerdefinierte Module zu schreiben, um die Anforderungen für verschiedene Herausforderungen im Netzwerkmanagement zu erfüllen.
Bewährte Verfahren für NAPALM
Für ein erfolgreiches Netzwerkmanagement mit NAPALM sollten Netzwerktechniker bestimmte Best Practices befolgen, die zu einem stabilen Netzwerk und weniger Ausfällen führen. Nachfolgend finden Sie einige Strategien, die beim Netzwerkmanagement den Unterschied ausmachen können:
- Dokumentieren Sie den Code: Die Dokumentation ist eine großartige Möglichkeit, um zu verstehen, wie etwas funktioniert. Sie bietet anderen Administratoren eine Referenz, wenn jemand abwesend ist oder nicht mehr im Unternehmen arbeitet.
- Verwenden Sie ein Testbed: Ein Testbed ist eine Sammlung von Netzwerkgeräten, mit denen sich Automatisierungsprojekte testen lassen, bevor sie in einer Produktionsumgebung eingesetzt werden.
- Überwachen Sie das Netzwerk: Kein Netzwerk ist perfekt, daher ist es wichtig, zu überprüfen, ob alles wie erwartet funktioniert, sobald der Code in die Produktion überführt wird.
Netzwerktechniker sollten bei der Arbeit mit Automatisierungsskripten auch geeignete Methoden zur Fehlerbehandlung und Versionskontrolle implementieren.
Das Ausnahmemanagement kann Netzwerkadministratoren helfen, Fehler zu vermeiden, die komplexe Probleme im Netzwerk verursachen. Wenn beim Versuch, eine Verbindung zu einem Netzwerkgerät herzustellen, ein Fehler auftritt, behandelt ein Skript die Ausnahme und hilft, einen Absturz zu verhindern. Das Ausnahmemanagement kann auch allgemeine Probleme im Netzwerk identifizieren und beheben. Die Protokollierung hilft bei der Nachverfolgung und Fehlerbehebung von Automatisierungsskripten sowie deren Aktualisierungen, wodurch die Skripte zuverlässiger werden.
Versionskontrollsysteme (VCS) helfen Netzwerkingenieuren auch bei der Zusammenarbeit an Skripten und der Verwaltung komplexer Netzwerke. VCS zeichnen alle Codeänderungen auf, so dass die Benutzer sehen können, wer wann und warum Änderungen vorgenommen hat. Sie können den Benutzern auch dabei helfen, Änderungen rückgängig zu machen, falls erforderlich.