Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Erstellen und Ausführen von Ansible-Playbooks zur Verwaltung von Junos-Geräten

Sie können Ansible-Playbooks erstellen, die Module von Juniper Networks ausführen, um Betriebs- und Konfigurationsaufgaben auf Geräten mit Junos OS und Geräten mit Junos OS Evolved auszuführen.

Juniper Networks bietet Ansible-Module, mit denen Sie Betriebs- und Konfigurationsaufgaben auf Junos-Geräten durchführen können. In diesem Abschnitt wird erläutert, wie Sie ein einfaches Ansible-Playbook erstellen, um Module von Juniper Networks auf Junos-Geräten auszuführen.

Übersicht über das Playbook

Sie erstellen Ansible-Playbooks, um komplexere Verwaltungsaufgaben zu bewältigen. Playbooks bestehen aus einem oder mehreren Spielen oder Gruppen von Aufgaben, die auf einer Reihe definierter Hosts ausgeführt werden. Jedes Playbook muss Folgendes enthalten:

  • Die Hosts, auf denen die Tasks ausgeführt werden

  • Die Liste der Aufgaben, die auf jedem Host ausgeführt werden sollen

  • Alle erforderlichen Variablen oder Modulparameter, einschließlich Authentifizierungsparameter, falls Sie diese nicht an anderer Stelle definiert haben

Alle Ansible-Hosts, auf die ein Playbook verweist, müssen in der Ansible-Bestandsdatei definiert sein. Der Standardspeicherort für die Ansible-Inventardatei ist /etc/ansible/hosts.

Ein Playbook führt Aufgaben auf einem Host durch Aufrufen von Modulen aus. Die Ansible-Module von Juniper Networks werden über die juniper.device Sammlung verteilt, die auf Ansible Galaxy gehostet wird. Um die Module von Juniper Networks in Ihrem Playbook zu verwenden, müssen Sie die Sammlung auf dem Ansible-Steuerungsknoten installieren. Weitere Informationen zu der Sammlung und den Modulen finden Sie unter Grundlegendes zu Ansible für Junos OS-Sammlungen und -Module.

Die Module von Juniper Networks benötigen kein Python auf Junos-Geräten, da sie die Junos-XML-API und NETCONF als Schnittstelle mit dem Gerät verwenden. Um also Operationen auf Junos-Geräten durchzuführen, müssen Sie Module lokal auf dem Ansible-Kontrollknoten ausführen, auf dem Python installiert ist. Sie können die Module lokal ausführen, indem Sie die entsprechenden Parameter für die Ansible-Verbindung und das Netzwerkbetriebssystem definieren. Informationen zu den Verbindungsparametern und -werten für Module in der juniper.device Sammlung finden Sie unter Ausführen von Modulen auf Junos-Geräten.

Standardmäßig sammelt Ansible automatisch Systemfakten vom Remote-Host. Wenn Sie die Wiedergaben jedoch lokal ausführen, sammelt Ansible die Fakten vom Ansible-Steuerknoten anstelle des Remote-Hosts. Um das Sammeln von Fakten für den Steuerungsknoten zu vermeiden, nehmen Sie es in das Playbook auf gather_facts: no .

Wenn Sie die Juniper Networks-Module mit einer NETCONF-Sitzung über SSH ausführen, muss auf dem Junos-Gerät NETCONF aktiviert sein. Es wird empfohlen, eine einfache Aufgabe im Playbook zu erstellen, die explizit testet, ob NETCONF auf jedem Gerät aktiviert ist, bevor Sie andere Aufgaben ausführen. Wenn diese Aufgabe für einen Host fehlschlägt, führt Ansible standardmäßig die verbleibenden Aufgaben für diesen Host nicht aus. Ohne diesen Test erhalten Sie während der Ausführung des Playbooks möglicherweise einen generischen Verbindungsfehler, der nicht angibt, ob dieses Problem oder ein anderes Problem die Ursache für Fehler ist.

Sie schreiben Playbooks im YAML-Format. YAML reagiert empfindlich auf Leerzeichen und die Einrückung ist signifikant. Daher sollten Ihre Playbooks immer Leerzeichen anstelle von Tabulatoren verwenden. In YAML sind Elemente, denen ein Bindestrich (-) vorangestellt ist, Listenelemente, und die key: value Notation stellt einen Hash dar. Ausführliche Informationen zum Erstellen von Ansible-Playbooks finden Sie in der offiziellen Ansible-Dokumentation unter https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks.html.

Erstellen eines Ansible-Playbooks

Bevor Sie beginnen:

  • Wählen Sie das Modul-Set aus, das Sie zur Verwaltung von Junos-Geräten verwenden möchten. Die juniper.device Sammlung umfasst die juniper.device Originalmodule und die junipernetworks.junos Module.

  • Aktualisieren Sie Ihre Inventardatei mit den entsprechenden Ansible-Verbindungs- und Netzwerkbetriebssystemvariablen für Ihren Modulsatz, wie unter Grundlegendes zur Ansible-Inventardatei beim Verwalten von Junos-Geräten beschrieben.

So erstellen Sie ein einfaches Playbook zum Ausführen von Aufgaben auf Junos-Geräten:

  1. Erstellen Sie in Ihrem bevorzugten Editor eine neue Datei mit einem beschreibenden Playbook-Namen, der die Dateierweiterung .yaml verwendet.
  2. Fügen Sie drei Bindestriche ein, um den Anfang des YAML-Dokuments anzugeben.
  3. Geben Sie einen beschreibenden Namen für das Stück an.
  4. Definieren Sie eine durch Kommas getrennte (oder durch Doppelpunkte getrennte) Liste der Hosts oder Hostgruppen, auf denen die Module ausgeführt werden. Geben Sie an all , dass alle Hosts in der Bestandslistendatei angegeben werden sollen.

    Die Ansible-Inventardatei muss alle Hosts oder Gruppen von Hosts definieren, auf die Sie im Playbook verweisen.

  5. (Optional) Einschließen gather_facts: no , um die Erfassung von Fakten für den Zielhost zu verhindern, der bei lokalen Verbindungen der Ansible-Steuerungsknoten ist.
  6. (Optional) Verweisen Sie auf die Sammlung.

    Sie können den collections Schlüssel im Playbook definieren und dann nur auf den Namen des Moduls in der Aufgabe verweisen. Es wird jedoch empfohlen, den collections Schlüssel wegzulassen und stattdessen über den vollqualifizierten Auflistungsnamen (Fully Qualified Collection Name, FQCN) auf den Sammlungsinhalt zu verweisen.

    In diesem Beispiel wird der collections Schlüssel weggelassen und der vollqualifizierte Auflistungsname verwendet.

  7. Definieren Sie einen Aufgabenabschnitt, und fügen Sie eine oder mehrere Aufgaben als Listenelemente ein.
  8. (Optional) Als zusätzliche Prüfung für NETCONF-Sitzungen über SSH erstellen Sie eine Aufgabe zur Überprüfung der NETCONF-Konnektivität für jedes Junos-Gerät.
  9. Erstellen Sie Aufgaben, die die Module von Juniper Networks verwenden, und stellen Sie alle erforderlichen Verbindungs- und Authentifizierungsparameter bereit.

    In diesem Beispiel werden SSH-Schlüssel verwendet, die in einem SSH-Schlüssel-Agent geladen werden, und es werden keine expliziten Anmeldeinformationen für das facts Modul im Playbook bereitgestellt.

  10. (Optional) Definieren Sie nach Bedarf zusätzliche Aufgaben oder zusätzliche Spiele.

Ausführen des Playbooks

Das Playbook in diesem Beispiel verwendet die folgende Ansible-Inventardatei, die die Verbindung als localdefiniert.

So führen Sie das Playbook aus:

  • Geben Sie den ansible-playbook Befehl auf dem Steuerungsknoten ab und geben Sie den Playbook-Pfad und alle erforderlichen Optionen an.