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

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

Juniper Networks bietet Ansible-Module, mit denen Sie Betriebs- und Konfigurationsaufgaben auf Junos-Geräten ausführen können. In diesem Thema wird beschrieben, wie Sie ein einfaches Ansible-Playbook zum Ausführen von Juniper Networks-Modulen auf Junos-Geräten erstellen.

Sie erstellen Ansible-Playbooks, um komplexere Verwaltungsaufgaben zu bewältigen. Playbooks bestehen aus einem oder mehreren Spielzügen oder Gruppen von Aufgaben, die auf einer Reihe definierter Hosts ausgeführt werden. Ansible-Hosts, auf die im Playbook verwiesen wird, müssen in der Ansible-Bestandsdatei definiert werden, die sich standardmäßig unter /etc/ansible/hosts befindet.

Jedes Playbook-Play muss Folgendes angeben:

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

  • Die Liste der Aufgaben, die auf den einzelnen Hosts ausgeführt werden sollen

  • Alle erforderlichen Variablen oder Modulparameter, einschließlich Authentifizierungsparameter, wenn diese nicht an anderer Stelle definiert sind

Ein Playbook führt Aufgaben auf einem Host aus, indem Module aufgerufen werden. Die Ansible-Module von Juniper Networks werden über die Sammlung verteilt, die juniper.device auf Ansible Galaxy gehostet wird. Um die Module von Juniper Networks in Ihrem Playbook verwenden zu können, müssen Sie die Sammlung auf dem Ansible-Steuerungsknoten installieren. Weitere Informationen zur Sammlung und zu 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 Junos PyEZ und die Junos XML API über NETCONF für die Verbindung mit dem Gerät verwenden. Um Vorgänge auf Junos-Geräten auszuführen, müssen Sie daher Module lokal auf dem Ansible-Steuerungsknoten ausführen, auf dem Python installiert ist. Sie können die Module lokal ausführen, indem Sie sie in die Playbook-Wiedergabe aufnehmen connection: local . Wenn Sie verwenden connection: local, stellt Ansible für jede Aufgabe im Spiel, für die eine Verbindung erforderlich ist, eine separate Verbindung zum Host her. Die juniper.device Sammlungsmodule unterstützen connection: juniper.device.pyezauch . Dieser Verbindungstyp führt die Module weiterhin lokal auf dem Ansible-Steuerungsknoten aus, stellt jedoch eine Verbindung zum Host her, die über die Ausführung aller Aufgaben in einem Spiel bestehen bleibt.

Standardmäßig erfassen Ansible-Plays automatisch Systemfakten vom Remote-Host. Wenn Sie die Wiedergaben jedoch lokal ausführen, erfasst Ansible die Fakten vom Ansible-Steuerungsknoten und nicht vom Remote-Host. Um das Sammeln von Fakten für den Steuerungsknoten zu vermeiden, fügen Sie sie in das Playbook ein gather_facts: no .

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

Playbooks werden in YAML ausgedrückt. YAML unterscheidet Leerzeichen und Einrückungen sind erheblich. Daher sollten Ihre Playbooks immer Leerzeichen anstelle von Tabulatoren verwenden. In YAML werden Elemente, denen ein Bindestrich (-) vorangestellt ist, als Listenelemente betrachtet, und die Notation key: value stellt einen Hash dar. Ausführliche Informationen zum Erstellen von Ansible-Playbooks finden Sie in der offiziellen Ansible-Dokumentation unter https://docs.ansible.com/ansible/latest/playbook_guide/playbooks.html.

In den folgenden Abschnitten werden die Schritte zum Erstellen und Ausführen eines einfachen Playbooks beschrieben, das Ansible-Module auf einem Junos-Gerät ausführt.

Erstellen eines Playbooks

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 Playbooknamen, der die YAML-Dateierweiterung verwendet.
  2. Fügen Sie drei Bindestriche ein, um den Anfang des YAML-Dokuments anzuzeigen.
  3. Geben Sie einen beschreibenden Namen für das Theaterstück an.
  4. Definieren Sie eine durch Doppelpunkte getrennte Liste der Hosts oder Gruppen von Hosts, auf denen die Module ausgeführt werden sollen, oder geben Sie all an, dass alle Hosts in der Bestandslistendatei angegeben werden sollen.

    Alle Hosts oder Gruppen, auf die im Playbook verwiesen wird, müssen in der Ansible-Bestandsdatei definiert werden.

  5. Weisen Sie Ansible an, die Aufgaben des Spiels lokal auf dem Ansible-Steuerungsknoten auszuführen, auf dem Python installiert ist, da Python auf Junos-Geräten nicht erforderlich ist.
    • Include connection: local , um Aufgaben lokal auszuführen, aber für jede Aufgabe im Spiel, für die eine Verbindung erforderlich ist, eine separate Verbindung zum Host herzustellen.

    • Include connection: juniper.device.pyez , um Aufgaben lokal auszuführen, aber eine dauerhafte Verbindung zum Host herzustellen, die über die Ausführung aller Aufgaben im Spiel bestehen bleibt. Dieser Verbindungstyp wird nur von den juniper.device Sammlungsmodulen unterstützt.

    In den verbleibenden Schritten wird verwendetconnection: local. Um die juniper.device Sammlungsmodule mit einer persistenten Verbindung zu verwenden, aktualisieren Sie das endgültige Playbook so, dass .connection: juniper.device.pyez

  6. (Optional) Includegather_facts: no, um zu vermeiden, dass Fakten für den Zielhost erfasst werden, der bei lokalen Verbindungen der Ansible-Kontrollknoten ist.
  7. (Optional) Verweisen Sie auf die juniper.device Sammlung.

    Sie können den collections Schlüssel im Playbook definieren und dann nur auf den Modulnamen in der Aufgabe verweisen. Die empfohlene Methode besteht jedoch darin, den collections Schlüssel wegzulassen und stattdessen anhand des vollqualifizierten Auflistungsnamens (Fully Qualified Collection Name, FQCN) auf den Auflistungsinhalt zu verweisen.

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

  8. Definieren Sie einen Aufgabenabschnitt, und fügen Sie eine oder mehrere Aufgaben als Listenelemente hinzu.
  9. (Optional) Erstellen Sie als zusätzliche Überprüfung einen Task zur Überprüfung der NETCONF-Konnektivität für jedes Junos-Gerät.
  10. Erstellen Sie Aufgaben, die die Juniper Networks-Module verwenden, und geben Sie alle erforderlichen Verbindungs- und Authentifizierungsparameter an.

    In diesem Beispiel werden vorhandene SSH-Schlüssel am Standardspeicherort verwendet, und es werden nicht explizit Anmeldeinformationen für das facts Modul im Playbook bereitgestellt.

  11. (Optional) Definieren Sie nach Bedarf zusätzliche Aufgaben oder zusätzliche Spielzüge.

Ausführen des Playbooks

So führen Sie das Playbook aus:

  • Geben Sie den ansible-playbook Befehl auf dem Steuerungsknoten ein, und geben Sie den Playbookpfad und alle gewünschten Optionen an.