Créer et exécuter des playbooks Ansible pour gérer les équipements Junos
Vous pouvez créer des playbooks Ansible qui exécutent des modules Juniper Networks pour exécuter des tâches opérationnelles et de configuration sur des équipements exécutant Junos OS et des équipements exécutant Junos OS Evolved.
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.
Présentation du guide stratégique
Vous créez des playbooks Ansible pour gérer des tâches de gestion plus complexes. Les playbooks se composent d’un ou plusieurs plays, ou groupes de tâches, qui opèrent sur un ensemble d’hôtes définis. Chaque jeu du playbook doit spécifier :
-
Les hôtes sur lesquels les tâches s’exécutent
-
La liste des tâches à exécuter sur chaque hôte
-
Toutes les variables ou paramètres de module requis, y compris les paramètres d’authentification, si vous ne les avez pas définis ailleurs
Tous les hôtes Ansible auxquels un playbook fait référence doivent être définis dans le fichier d’inventaire Ansible. L’emplacement par défaut du fichier d’inventaire Ansible est /etc/ansible/hosts.
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 de 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 d’Ansible pour les collections et modules Junos OS.
Les modules Juniper Networks ne nécessitent pas Python sur les équipements Junos, car ils utilisent l’API XML de Junos et NETCONF pour s’interfacer avec l’équipement. Ainsi, 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 définissant les paramètres de connexion Ansible et de système d’exploitation réseau appropriés. Pour plus d’informations sur les paramètres et les valeurs de connexion des modules de la collection, reportez-vous à la juniper.device section Exécution de modules sur des équipements Junos.
Par défaut, les lectures Ansible collectent automatiquement les informations système de l’hôte distant. Cependant, lorsque vous exécutez les lectures localement, Ansible recueille les faits à partir du nœud de contrôle Ansible au lieu de l’hôte distant. Pour éviter de collecter des faits pour le nœud de contrôle, incluez-les gather_facts: no dans le playbook.
Lorsque vous exécutez les modules Juniper Networks à l’aide d’une session NETCONF sur SSH, NETCONF doit être activé sur le périphérique 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 pouvez obtenir une erreur de connexion générique pendant l’exécution du playbook qui n’indique pas si ce problème ou un autre problème est la cause d’échecs.
Vous écrivez des playbooks au format 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. En YAML, les éléments précédés d’un trait d’union (-) sont 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/projects/ansible/latest/playbook_guide/playbooks.html.
Créer un playbook Ansible
Avant de commencer :
-
Choisissez l’ensemble de modules que vous utiliserez pour gérer les équipements Junos. La
juniper.devicecollection comprend les modules originauxjuniper.deviceet lesjunipernetworks.junosmodules. -
Mettez à jour votre fichier d’inventaire avec la connexion Ansible et les variables de système d’exploitation réseau appropriées pour votre ensemble de modules, comme décrit dans Présentation du fichier d’inventaire Ansible lors de la gestion des appareils Junos.
Pour créer un playbook simple permettant d’effectuer des tâches sur les équipements Junos :
Exécuter le guide stratégique
Le playbook de cet exemple utilise le fichier d’inventaire Ansible suivant, qui définit la connexion comme local.
[dc1] dc1a.example.com ansible_host=198.51.100.1 [dc1:vars] ansible_connection=local
Pour exécuter le playbook :
-
Exécutez la
ansible-playbookcommande sur le nœud de contrôle et fournissez le chemin du playbook et toutes les options requises.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