SUR CETTE PAGE
Créer et exécuter des playbooks Ansible pour la gestion des équipements Junos
RÉSUMÉ Vous pouvez créer des playbooks Ansible qui exécutent des modules Juniper Networks pour effectuer des tâches opérationnelles et de configuration sur des équipements Junos.
Juniper Networks fournit des modules Ansible qui vous permettent d’effectuer des tâches opérationnelles et de configuration sur les équipements Junos. Cette rubrique explique comment créer un playbook Ansible simple pour exécuter des modules Juniper Networks sur des équipements Junos.
Vous créez des playbooks Ansible pour gérer des tâches de gestion plus complexes. Les playbooks sont constitués d’une ou plusieurs lectures, ou groupes de tâches, qui opèrent sur un ensemble d’hôtes définis. Les hôtes Ansible référencés dans le playbook doivent être définis dans le fichier d’inventaire Ansible, qui se trouve par défaut dans /etc/ansible/hosts.
Chaque pièce de jeu du livre de jeu doit préciser :
-
Les hôtes sur lesquels les tâches opèrent
-
La liste des tâches à exécuter sur chaque hôte
-
Toutes les variables ou tous les paramètres de module requis, y compris les paramètres d’authentification, s’ils ne sont pas définis ailleurs
Un playbook exécute des tâches sur un hôte en appelant des modules. Les modules Ansible de Juniper Networks sont distribués via la juniper.device
collection, qui est hébergée sur Ansible Galaxy. Pour utiliser les modules Juniper Networks dans votre playbook, vous devez installer la collection sur le nœud de contrôle Ansible. Pour plus d’informations sur la collection et les modules, consultez Présentation des collections et modules Ansible pour Junos OS.
Les modules Juniper Networks n’ont pas besoin de Python sur les équipements Junos, car ils utilisent Junos PyEZ et l’API Junos XML sur NETCONF pour s’interfacer avec l’équipement. Par conséquent, pour effectuer des opérations sur des équipements Junos, vous devez exécuter des modules localement sur le nœud de contrôle Ansible, sur lequel Python est installé. Vous pouvez exécuter les modules localement en les incluant connection: local
dans le playbook playbook. Lorsque vous utilisez connection: local
, Ansible établit une connexion distincte avec l’hôte pour chaque tâche du jeu qui nécessite une connexion. Les juniper.device
modules de collecte prennent également en charge connection: juniper.device.pyez
. Ce type de connexion exécute toujours les modules localement sur le nœud de contrôle Ansible, mais il établit une connexion à l’hôte qui persiste pendant l’exécution de toutes les tâches d’un jeu.
Par défaut, les lectures Ansible collectent automatiquement les informations sur le système à partir de l’hôte distant. Toutefois, lorsque vous exécutez les lectures localement, Ansible récupère les informations à partir du nœud de contrôle Ansible au lieu de l’hôte distant. Pour éviter de collecter des informations sur le nœud de contrôle, incluez-le gather_facts: no
dans le playbook.
Lorsque vous exécutez les modules Juniper Networks à l’aide d’une session NETCONF sur SSH, qui est la valeur par défaut, NETCONF doit être activé sur l’équipement Junos. Nous vous recommandons de créer une tâche simple dans le playbook qui teste explicitement si NETCONF est activé sur chaque périphérique avant d’exécuter d’autres tâches. Si cette tâche échoue pour un hôte, par défaut, Ansible n’exécute pas les tâches restantes pour cet hôte. Sans ce test, vous risquez d’obtenir une erreur de connexion générique lors de l’exécution du playbook qui n’indique pas si ce problème ou un autre est à l’origine des échecs.
Les playbooks sont exprimés en YAML. YAML est sensible aux espaces blancs et l’indentation est importante. Par conséquent, vos playbooks doivent toujours utiliser des espaces plutôt que des tabulations. Dans YAML, les éléments précédés d’un trait d’union (-) sont considérés comme des éléments de liste et la key: value
notation représente un hachage. Pour plus d’informations sur la création de playbooks Ansible, reportez-vous à la documentation officielle d’Ansible à l’adresse https://docs.ansible.com/ansible/latest/playbook_guide/playbooks.html.
Les sections suivantes décrivent les étapes de création et d’exécution d’un playbook simple qui exécute des modules Ansible sur un équipement Junos.
Créer un playbook
Pour créer un playbook simple afin d’effectuer des tâches sur les équipements Junos :
Exécuter le playbook
Pour exécuter le playbook :
-
Émettez la
ansible-playbook
commande sur le nœud de contrôle et indiquez le chemin d’accès au playbook ainsi que les options souhaitées.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