AUF DIESER SEITE
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.pyez
auch . 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:
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.user@ansible-cn:~$ ansible-playbook junos-get-facts.yaml PLAY [Get Device Facts] *************************************************** TASK [Check NETCONF connectivity] ***************************************** ok: [dc1a.example.net] TASK [Retrieve information from Junos devices] **************************** ok: [dc1a.example.net] TASK [Print version] ****************************************************** ok: [dc1a.example.net] => { "junos.version": "19.4R1.10" } PLAY RECAP **************************************************************** dc1a.example.net : ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0