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.deviceSammlung umfasst diejuniper.deviceOriginalmodule und diejunipernetworks.junosModule. -
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:
Ausführen des Playbooks
Das Playbook in diesem Beispiel verwendet die folgende Ansible-Inventardatei, die die Verbindung als localdefiniert.
[dc1] dc1a.example.com ansible_host=198.51.100.1 [dc1:vars] ansible_connection=local
So führen Sie das Playbook aus:
-
Geben Sie den
ansible-playbookBefehl auf dem Steuerungsknoten ab und geben Sie den Playbook-Pfad und alle erforderlichen 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