Utiliser Ansible pour récupérer des faits à partir d’équipements Junos
Juniper Networks fournit des modules Ansible que vous pouvez utiliser pour gérer les équipements Junos et effectuer des tâches opérationnelles et de configuration sur les équipements. Les modules n’ont pas besoin de Python sur l’équipement géré, car ils utilisent Junos PyEZ et l’API Junos XML sur NETCONF pour s’interfacer avec l’appareil. Par conséquent, lorsque vous utilisez Ansible pour effectuer des opérations sur des équipements Junos, vous devez exécuter les modules Ansible localement sur le nœud de contrôle. Par conséquent, Ansible collecte par défaut les faits à partir du nœud de contrôle Ansible au lieu du nœud géré.
Juniper Networks fournit un module qui vous permet de collecter des informations sur les équipements, y compris la configuration active, à partir des équipements Junos. Le tableau 1 présente les modules disponibles. Le module utilise le système de collecte d’informations Junos PyEZ pour récupérer les informations sur l’équipement. Pour plus d’informations sur le système de collecte de faits Junos PyEZ et la liste complète des clés de dictionnaire renvoyées, consultez jnpr.junos.facts.
Ensemble de contenu |
Nom du module |
---|---|
|
Le facts
module renvoie les faits sur l’appareil dans le ansible_facts.junos
dictionnaire. Le module vous permet également d’enregistrer les données retournées dans un fichier sur le nœud de contrôle Ansible local. Pour spécifier le répertoire dans lequel enregistrer les informations récupérées, incluez l’argument savedir
module et définissez le chemin d’accès au répertoire cible. Lorsque vous incluez l’argument savedir
, le playbook génère les fichiers suivants pour chaque périphérique, où hostname est la valeur du fait récupéré à partir du périphérique, qui peut être différente du nom d’hôte hostname
transmis au module :
-
hostname-facts.json : informations sur l’équipement au format JSON
-
hostname-inventory.xml : inventaire matériel de l’appareil au format XML
Par exemple, le playbook suivant récupère les informations sur chaque périphérique du groupe d’inventaire et enregistre les données de chaque périphérique dans des fichiers distincts dans le répertoire playbook du nœud de contrôle Ansible. Étant donné que le playbook exécute le module localement, Ansible collecte par défaut les facts
faits à partir du nœud de contrôle. Le playbook inclut l’argument gather_facts: no
pour empêcher Ansible de collecter des faits à partir du nœud de contrôle et utilise à la place le juniper.device.facts
module pour récupérer les faits à partir de l’équipement géré. Pour s’authentifier auprès de l’appareil, l’exemple utilise des clés SSH existantes à l’emplacement par défaut et ne fournit donc pas explicitement les informations d’identification du facts
module dans le playbook.
--- - 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 }}"
Par défaut, le facts
module ne renvoie pas la configuration de l’appareil. Pour renvoyer la configuration active d’un périphérique, en plus des faits sur l’appareil, incluez l’option config_format
et spécifiez le format dans lequel renvoyer la configuration. Les valeurs de format acceptables sont 'json'
, 'set'
, 'text'
et 'xml'
. Le format demandé doit être pris en charge par la version de Junos OS en cours d’exécution sur le périphérique.
Lorsque vous incluez l’option config_format
, le ansible_facts.junos
dictionnaire dans la réponse du module inclut la config
clé avec la configuration dans le format spécifié dans une seule chaîne multiligne. Toutefois, même si le playbook inclut cette savedir
option, les données de configuration ne sont pas écrites dans un fichier.
Pour utiliser Ansible afin de récupérer des données de configuration à partir d’un équipement Junos et d’enregistrer les données dans un fichier, utilisez le config
module au lieu du facts
module. Pour plus d’informations, consultez Utiliser Ansible pour récupérer ou comparer des configurations Junos OS.
Dans l’exemple suivant, le playbook effectue les opérations suivantes :
-
Récupère les faits sur l’équipement et la configuration active pour chaque équipement du groupe d’inventaire
-
Enregistre les faits et l’inventaire matériel de chaque appareil dans des fichiers distincts dans le répertoire playbook du nœud de contrôle Ansible
-
Imprime la configuration de chaque périphérique sur la sortie standard
--- - 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