Verwenden von Ansible zum Abrufen von Fakten von Junos-Geräten
Juniper Networks stellt Ansible-Module bereit, mit denen Sie Junos-Geräte verwalten und Betriebs- und Konfigurationsaufgaben auf den Geräten ausführen können. Die Module benötigen kein Python auf dem verwalteten Gerät, da sie Junos PyEZ und die Junos XML-API über NETCONF für die Verbindung mit dem Gerät verwenden. Wenn Sie Ansible zum Ausführen von Vorgängen auf Junos-Geräten verwenden, müssen Sie die Ansible-Module daher lokal auf dem Steuerungsknoten ausführen. Daher erfasst Ansible standardmäßig Fakten vom Ansible-Kontrollknoten und nicht vom verwalteten Knoten.
Juniper Networks stellt ein Modul bereit, mit dem Sie Gerätefakten, einschließlich der aktiven Konfiguration, von Junos-Geräten erfassen können. Tabelle 1 gibt einen Überblick über das verfügbare Modul. Das Modul verwendet das Junos PyEZ-System zur Erfassung von Fakten, um die Gerätefakten abzurufen. Weitere Hinweise zum Junos PyEZ-Faktenerfassungssystem und die vollständige Liste der zurückgegebenen Wörterbuchschlüssel finden Sie unter jnpr.junos.facts.
Inhaltsgruppe |
Modulname |
---|---|
|
Das facts
Modul gibt die Gerätefakten im ansible_facts.junos
Wörterbuch zurück. Das Modul ermöglicht es Ihnen auch, die zurückgegebenen Daten in einer Datei auf dem lokalen Ansible-Kontrollknoten zu speichern. Um das Verzeichnis anzugeben, in dem die abgerufenen Informationen gespeichert werden sollen, fügen Sie das savedir
Modulargument hinzu und definieren Sie den Pfad zum Zielverzeichnis. Wenn Sie das savedir
Argument einschließen, generiert das Playbook die folgenden Dateien für jedes Gerät, wobei hostname der Wert des hostname
vom Gerät abgerufenen Fakts ist, der sich von dem an das Modul übergebenen Hostnamen unterscheiden kann:
-
hostname-facts.json – Gerätefakten im JSON-Format
-
hostname-inventory.xml – Hardwareinventar des Geräts im XML-Format
Das folgende Playbook ruft z. B. die Gerätefakten für jedes Gerät in der Bestandslistengruppe ab und speichert die Daten für jedes Gerät in separaten Dateien im Playbook-Verzeichnis auf dem Ansible-Steuerungsknoten. Da das Playbook das facts
Modul lokal ausführt, sammelt Ansible standardmäßig Fakten vom Steuerungsknoten. Das Playbook enthält das gather_facts: no
Argument, Ansible daran zu hindern, Fakten vom Steuerungsknoten zu erfassen, und verwendet stattdessen das juniper.device.facts
Modul, um die Fakten vom verwalteten Gerät abzurufen. Für die Authentifizierung mit dem Gerät werden im Beispiel vorhandene SSH-Schlüssel am Standardspeicherort verwendet, sodass Anmeldeinformationen für das facts
Modul im Playbook nicht explizit bereitgestellt werden.
--- - name: Get device facts hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve device facts and save to file juniper.device.facts: savedir: "{{ playbook_dir }}"
Standardmäßig gibt das facts
Modul die Gerätekonfiguration nicht zurück. Wenn Sie die aktive Konfiguration für ein Gerät zusätzlich zu den Gerätefakten zurückgeben möchten, fügen Sie die config_format
Option hinzu, und geben Sie das Format an, in dem die Konfiguration zurückgegeben werden soll. Zulässige Formatwerte sind 'json'
, 'set'
und 'text'
'xml'
. Das angeforderte Format muss von der Junos OS-Version unterstützt werden, die auf dem Gerät ausgeführt wird.
Wenn Sie die config_format
Option einschließen, enthält das ansible_facts.junos
Wörterbuch in der Modulantwort den config
Schlüssel mit der Konfiguration im angegebenen Format in einer einzelnen mehrzeiligen Zeichenfolge. Selbst wenn das Playbook die savedir
Option enthält, werden die Konfigurationsdaten jedoch nicht in eine Datei geschrieben.
Um Ansible zum Abrufen von Konfigurationsdaten von einem Junos-Gerät und zum Speichern der Daten in einer Datei zu verwenden, verwenden Sie das config
Modul anstelle des facts
Moduls. Weitere Informationen finden Sie unter Verwenden von Ansible zum Abrufen oder Vergleichen von Junos OS-Konfigurationen.
Das Playbook im nächsten Beispiel führt die folgenden Vorgänge aus:
-
Ruft die Gerätefakten und die aktive Konfiguration für jedes Gerät in der Bestandslistengruppe ab
-
Speichert die Fakten und den Hardwarebestand für jedes Gerät in separaten Dateien im Playbook-Verzeichnis auf dem Ansible-Steuerungsknoten
-
Gibt die Konfiguration für jedes Gerät in der Standardausgabe aus
--- - name: Get device facts and configuration hosts: dc1 connection: local gather_facts: no tasks: - name: Retrieve device facts and configuration and save facts to file juniper.device.facts: savedir: "{{ playbook_dir }}" config_format: "xml" register: result - name: Print configuration ansible.builtin.debug: var: result.ansible_facts.junos.config
user@ansible-cn:~$ ansible-playbook facts.yaml PLAY [Get device facts and configurations] ********************************** TASK [Retrieve device facts and configuration and save facts to file] ******* ok: [dc1a.example.net] TASK [Print configuration] ************************************************** ok: [dc1a.example.net] => { "result.ansible_facts.junos.config": "<configuration commit-seconds=\"1605564153\" commit-localtime=\"2020-11-16 14:02:33 PST\" commit-user=\"admin\">\n <version>20191212.201431_builder.r1074901</version>\n [...output truncated...] </configuration>\n" } PLAY RECAP ****************************************************************** dc1a.example.net : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0