Verwenden von Ansible mit Junos PyEZ-Tabellen zum Abrufen von Betriebsinformationen von Junos-Geräten
ZUSAMMENFASSUNG Verwenden Sie Junos PyEZ-Tabellen und -Ansichten in Ihren Ansible-Playbooks, um Betriebsinformationen von Junos-Geräten abzurufen.
Modulübersicht
Junos PyEZ-Betriebstabellen bieten eine einfache und effiziente Möglichkeit, Informationen aus komplexen Betriebsbefehlsausgaben zu extrahieren. Juniper Networks stellt ein Ansible-Modul bereit, mit dem Sie Junos PyEZ-Op-Tabellen aus Ansible-Playbooks heraus nutzen können. Tabelle 1 gibt einen Überblick über das Modul.
Inhaltsgruppe |
Modulname |
---|---|
|
Das table
Modul unterstützt nicht die Verwendung von Konfigurationstabellen und -ansichten.
Grundlegendes zu Junos PyEZ-Tabellen
Junos PyEZ ist ein Microframework für Python, mit dem Sie Junos-Geräte verwalten und automatisieren können. Junos PyEZ unterstützt die Verwendung einfacher YAML-Definitionen, die als Tabellen und Ansichten bezeichnet werden, um Betriebsbefehlsausgaben und Konfigurationsdaten von Junos-Geräten abzurufen und zu filtern.
Junos PyEZ-Betriebstabellen extrahieren Informationen aus der Ausgabe von Betriebsbefehlen oder RPCs. Die PyEZ-Module jnpr.junos.op
von Junos enthalten vordefinierte Tabellen- und Ansichtsdefinitionen für einige gängige RPCs. Sie können auch benutzerdefinierte Tabellen und Ansichten erstellen.
Wenn Sie Ansible zum Verwalten von Junos-Geräten verwenden, kann das table
Modul Junos PyEZ-Tabellen verwenden, um Daten von einem Gerät abzurufen. Das Modul kann auf die vordefinierten Betriebstabellen und -ansichten verweisen, die in der PyEZ-Verteilung von Junos enthalten sind, oder es kann auf benutzerdefinierte Tabellen und Ansichten verweisen, die sich auf dem Ansible-Steuerknoten befinden.
Allgemeine Informationen zu Junos PyEZ-Tabellen und -Ansichten finden Sie in den folgenden Abschnitten und in der zugehörigen Dokumentation im Junos PyEZ-Entwicklerhandbuch:
Verwendung der Ansible-Module von Juniper Networks mit Junos PyEZ-Tabellen
Das juniper.device.table
Modul kann die folgenden Argumente enthalten, um die zu verwendende Tabelle anzugeben:
-
file
– Dateiname der YAML-Datei, die die Junos PyEZ-Tabelle und -Ansicht definiert. -
path
- (Optional) Pfad zu dem Verzeichnis, das die YAML-Datei mit den Definitionen Table und View enthält. Der Standarddateipfad ist der Speicherort der vordefinierten Junos PyEZ op-Tabellen, die sich im Junos PyEZ-Installationspfad im Verzeichnis jnpr/junos/op befinden. -
table
—(Optional) Name der Tabelle, die zum Abrufen der Daten verwendet wird. Diese Option ist nur erforderlich, wenn eine Datei mehrere Tabellendefinitionen enthält oder die Datei eine einzelne Tabelle enthält, die "Tabelle" nicht im Namen enthält.
Mit der folgenden Aufgabe werden z. B. Daten mithilfe einer benutzerdefinierten Tabelle mit dem Namen FPCTable
abgerufen, die in der Datei fpc.yaml im Playbook-Verzeichnis definiert ist:
tasks: - name: Get FPC info juniper.device.table: file: "fpc.yaml" path: "{{ playbook_dir }}" table: "FPCTable"
Die Antwort des Moduls enthält den Schlüssel, der resource
eine Liste der Elemente enthält, die von der Tabelle zurückgegeben werden. Jedes Listenelement ist ein Wörterbuch, das die von der Ansicht definierten Feldnamen und den aus den Daten extrahierten Wert für jedes der entsprechenden Felder enthält.
Betrachten Sie die folgende vordefinierte Tabelle und Ansicht ArpTable
und ArpView
in der arp.yml Datei der Junos PyEZ-Distribution. ArpTable
führt den <get-arp-table-information>
RPC mit der Option aus, die <no-resolve/>
dem show arp no-resolve
CLI-Befehl entspricht. Die entsprechende Ansicht extrahiert die MAC-Adresse, die IP-Adresse und den Schnittstellennamen für jedes <arp-table-entry>
Element in der Antwort.
--- ArpTable: rpc: get-arp-table-information args: no-resolve: true item: arp-table-entry key: mac-address view: ArpView ArpView: fields: mac_address: mac-address ip_address: ip-address interface_name: interface-name
Das folgende Ansible-Playbook führt das table
Modul aus, das zum Abrufen von ARP-Informationen (Address Resolution Protocol) von Junos-Geräten verwendet wird ArpTable
. Da ArpTable
es in der Junos PyEZ-Distribution enthalten ist und sich im Standardverzeichnis für die vordefinierten Junos PyEZ op-Tabellen befindet, ist das path
Argument module nicht erforderlich, um den Speicherort der Datei anzugeben. Da ArpTable
es sich um die einzige Tabelle handelt, die in der Datei definiert ist und "Table" im Namen enthalten ist, ist das table
Argument nicht erforderlich, um die Tabelle anzugeben.
--- - name: Get ARP information hosts: dc1 connection: local gather_facts: no tasks: - name: Get ARP information using Junos PyEZ Table juniper.device.table: file: "arp.yml" register: result - name: Print response ansible.builtin.debug: var: result
Die Playbookausgabe, die der Kürze halber abgeschnitten ist, enthält die entsprechenden Felder, wie von ArpView definiert, für jedes <arp-table-entry>
Element, das vom Gerät zurückgegeben wird.
PLAY [Get ARP information] **************************************************** TASK [Get ARP information using Junos PyEZ Table] ***************************** ok: [dc1a.example.net] TASK [Print response] ********************************************************* ok: [dc1a.example.net] => { "result": { "changed": false, "failed": false, "msg": "Successfully retrieved 2 items from ArpTable.", "resource": [ { "interface_name": "em0.0", "ip_address": "10.0.0.5", "mac_address": "02:01:00:00:00:05" }, { "interface_name": "fxp0.0", "ip_address": "198.51.100.10", "mac_address": "30:7c:5e:48:4b:40" } ] } }
Das folgende Ansible-Playbook nutzt die vordefinierte Junos PyEZ-Betriebstabelle OspfInterfaceTable
, um Informationen über OSPF-Schnittstellen auf Junos-Geräten abzurufen. Die ospf.yml Datei definiert mehrere Tabellen und Ansichten, sodass der Modulaufruf das table
Argument enthält, um anzugeben, welche Tabelle verwendet werden soll.
--- - name: Get OSPF information hosts: dc1 connection: local gather_facts: no tasks: - name: Get OSPF interface information juniper.device.table: file: "ospf.yml" table: "OspfInterfaceTable" register: result - name: Print response ansible.builtin.debug: var: result
Angeben von RPC-Argumenten
Junos PyEZ-Betriebstabellen verfügen über einen optionalen args
Schlüssel, der die Standardbefehlsoptionen und -argumente für den RPC definiert, der von dieser Tabelle ausgeführt wird. Die Anwendung führt den RPC mit den Standardoptionen aus, es sei denn, der Benutzer überschreibt die Standardeinstellungen. In Junos PyEZ-Anwendungen können Sie die Standardoptionen überschreiben oder beim Aufruf der get()
Methode zusätzliche Optionen und Argumente an den RPC übergeben.
Das juniper.device.table
Modul ermöglicht es Ihnen auch, die in der Tabelle definierten Standardoptionen zu überschreiben oder zusätzliche Optionen und Argumente mithilfe des kwargs
Arguments an den RPC zu übergeben. Der kwargs
Wert ist ein Wörterbuch von Befehlsoptionen und Werten, die vom RPC und dem Gerät, auf dem der RPC ausgeführt wird, unterstützt werden müssen.
Beispielsweise führt die vordefinierte Junos PyEZ op-Tabelle EthPortTable
in der ethport.yml Datei den <get-interface-information>
RPC mit der media
Befehlsoption aus. Standardmäßig gibt der RPC Informationen für alle Schnittstellen zurück, die mit dem angegebenen regulären Ausdruck für den Schnittstellennamen übereinstimmen.
EthPortTable: rpc: get-interface-information args: media: true interface_name: '[afgxe][et]-*' args_key: interface_name item: physical-interface view: EthPortView
Das folgende Ansible-Playbook wird verwendet EthPortTable
, um Informationen über die Schnittstellen auf Junos-Geräten zu extrahieren. Das kwargs
Argument enthält interface_name: "ge-1/0/0"
, das den EthPortTable
Standardwert für interface_name
überschreibt und das Modul anweist, die angeforderten Felder nur für die ge-1/0/0-Schnittstelle abzurufen.
--- - name: Get interface information hosts: dc1 connection: local gather_facts: no tasks: - name: Get interface information for Ethernet interfaces juniper.device.table: file: "ethport.yml" kwargs: interface_name: "ge-1/0/0" register: result - name: Print response ansible.builtin.debug: var: result
Weitere Informationen zu den standardmäßigen und vom Benutzer bereitgestellten Befehlsoptionen und -argumenten in Junos PyEZ-Tabellen finden Sie unter Definieren von Junos PyEZ-Betriebstabellen und Verwenden von Junos PyEZ-Betriebstabellen und -Ansichten, die die strukturierte Ausgabe analysieren.