Utiliser Ansible avec les tables Junos PyEZ pour récupérer des informations opérationnelles à partir d’équipements Junos
RÉSUMÉ Utilisez les tables et vues Junos PyEZ dans vos playbooks Ansible pour récupérer des informations opérationnelles à partir de périphériques Junos.
Vue d’ensemble du module
Les tables opérationnelles (op) Junos PyEZ offrent un moyen simple et efficace d’extraire des informations à partir de sorties de commandes opérationnelles complexes. Juniper Networks fournit un module Ansible qui vous permet d’exploiter les tables d’opération Junos PyEZ à partir des playbooks Ansible. Le tableau 1 présente le module.
Ensemble de contenu |
Nom du module |
---|---|
|
Le table
module ne prend pas en charge l’utilisation des tables et vues de configuration.
Comprendre les tables Junos PyEZ
Junos PyEZ est un microframework pour Python qui vous permet de gérer et d’automatiser les équipements Junos. Junos PyEZ prend en charge l’utilisation de définitions YAML simples, appelées tables et vues, pour récupérer et filtrer la sortie des commandes opérationnelles et les données de configuration des équipements Junos.
Les tables opérationnelles (op) Junos PyEZ extraient des informations à partir de la sortie des commandes opérationnelles ou des RPC. Les modules Junos PyEZ jnpr.junos.op
contiennent des définitions prédéfinies de table et de vue pour certains RPC courants. Vous pouvez également créer des tables et des vues personnalisées.
Lorsque vous utilisez Ansible pour gérer des équipements Junos, le module peut utiliser les table
tables Junos PyEZ pour récupérer des données à partir d’un appareil. Le module peut référencer les tables et vues opérationnelles prédéfinies incluses dans la distribution Junos PyEZ, ou les tables et vues définies par l’utilisateur qui résident sur le nœud de contrôle Ansible.
Pour obtenir des informations générales sur les tables et les vues Junos PyEZ, reportez-vous aux sections suivantes et à la documentation associée dans le Guide du développeur Junos PyEZ :
Utilisation des modules Ansible de Juniper Networks avec les tables Junos PyEZ
Le juniper.device.table
module peut inclure les arguments suivants pour spécifier la table à utiliser :
-
file
: nom de fichier du fichier YAML qui définit la table et la vue Junos PyEZ. -
path
—(Facultatif) Chemin d’accès au répertoire contenant le fichier YAML avec les définitions Table et Vue. Le chemin d’accès au fichier par défaut est l’emplacement des tables d’opération Junos PyEZ prédéfinies, qui se trouvent dans le chemin d’installation de Junos PyEZ sous le répertoire jnpr/junos/op . -
table
—(Facultatif) Nom de la table qui sera utilisée pour récupérer les données. Cette option n’est requise que lorsqu’un fichier contient plusieurs définitions de table ou que le fichier contient une seule table dont le nom ne contient pas « Table ».
Par exemple, la tâche suivante récupère les données à l’aide d’une table personnalisée nommée FPCTable
, qui est définie dans le fichier fpc.yaml situé dans le répertoire playbook :
tasks: - name: Get FPC info juniper.device.table: file: "fpc.yaml" path: "{{ playbook_dir }}" table: "FPCTable"
La réponse du module inclut la resource
clé, qui contient une liste d’éléments retournés par la table. Chaque élément de liste est un dictionnaire contenant les noms de champs définis par la vue et la valeur extraite des données pour chacun des champs correspondants.
Considérez la table et la vue prédéfinies suivantes, ArpTable
et ArpView
, dans le fichier arp.yml de la distribution Junos PyEZ. ArpTable
exécute le <get-arp-table-information>
RPC avec l’option <no-resolve/>
, qui est équivalente à la show arp no-resolve
commande CLI. La vue correspondante extrait l’adresse MAC, l’adresse IP et le nom d’interface de chaque <arp-table-entry>
élément de la réponse.
--- 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
Le playbook Ansible suivant exécute le table
module, qui permet ArpTable
de récupérer des informations ARP (Address Resolution Protocol) à partir de périphériques Junos. Étant donné qu’il ArpTable
est inclus dans la distribution Junos PyEZ et qu’il réside dans le répertoire par défaut pour les tables d’op Junos PyEZ prédéfinies, l’argument path
module n’est pas nécessaire pour spécifier l’emplacement du fichier. De plus, étant donné qu’il s’agit de la seule table définie dans le fichier et qu’elle ArpTable
inclut « Table » dans son nom, l’argument table
n’est pas nécessaire pour spécifier la table.
--- - 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
La sortie du playbook, qui est tronquée par souci de concision, inclut les champs correspondants, tels que définis par ArpView, pour chaque <arp-table-entry>
élément renvoyé par l’appareil.
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" } ] } }
Le playbook Ansible suivant s’appuie sur la table opérationnelle Junos PyEZ prédéfinie, OspfInterfaceTable
, pour récupérer des informations sur les interfaces OSPF sur les équipements Junos. Le fichier ospf.yml définit plusieurs tables et vues, de sorte que l’appel de module inclut l’argument permettant de spécifier la table
table à utiliser.
--- - 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
Spécifier les arguments RPC
Les tables opérationnelles Junos PyEZ disposent d’une clé facultative args
qui définit les options de commande et les arguments par défaut du RPC exécuté par cette table. L’application exécute le RPC avec les options par défaut, sauf si l’utilisateur remplace les options par défaut. Dans les applications Junos PyEZ, vous pouvez remplacer les options par défaut ou passer des options et des arguments supplémentaires au RPC lors de l’appel de la get()
méthode.
Le juniper.device.table
module vous permet également de remplacer les options par défaut définies dans la table ou de passer des options et des arguments supplémentaires au RPC à l’aide de l’argument kwargs
. La kwargs
valeur est un dictionnaire d’options et de valeurs de commande, qui doit être pris en charge par le RPC et le périphérique sur lequel le RPC est exécuté.
Par exemple, la table EthPortTable
d’opération Junos PyEZ prédéfinie dans le fichier ethport.yml exécute le RPC avec l’option <get-interface-information>
de media
commande. Par défaut, le RPC renvoie des informations pour toutes les interfaces qui correspondent à l’expression régulière donnée pour le nom d’interface.
EthPortTable: rpc: get-interface-information args: media: true interface_name: '[afgxe][et]-*' args_key: interface_name item: physical-interface view: EthPortView
Le playbook Ansible suivant permet EthPortTable
d’extraire des informations sur les interfaces des équipements Junos. L’argument kwargs
includes interface_name: "ge-1/0/0"
, qui remplace la EthPortTable
valeur par défaut de et interface_name
demande au module de récupérer les champs demandés uniquement pour l’interface ge-1/0/0.
--- - 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
Pour plus d’informations sur les options et arguments de commande par défaut et fournis par l’utilisateur dans les tables Junos PyEZ, consultez Définition des tables opérationnelles Junos PyEZ et Utiliser les tables et vues opérationnelles Junos PyEZ pour analyser les sorties structurées.