Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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 :

  1. Dans votre éditeur préféré, créez un fichier avec un nom de playbook descriptif qui utilise l’extension de fichier .yaml.
  2. Incluez trois tirets pour indiquer le début du document YAML.
  3. Donnez un nom descriptif à la pièce.
  4. Définissez une liste délimitée par des deux-points des hôtes ou des groupes d’hôtes sur lesquels les modules fonctionneront, ou spécifiez all pour indiquer tous les hôtes dans le fichier d’inventaire.

    Tous les hôtes ou groupes référencés dans le playbook doivent être définis dans le fichier d’inventaire Ansible.

  5. Demandez à Ansible d’exécuter les tâches du jeu localement sur le nœud de contrôle Ansible sur lequel Python est installé, car Python n’est pas requis sur les équipements Junos.
    • Include connection: local permet d’exécuter des tâches localement, mais d’établir une connexion distincte à l’hôte pour chaque tâche du jeu qui nécessite une connexion.

    • Include connection: juniper.device.pyez permet d’exécuter des tâches localement, mais d’établir une connexion persistante à l’hôte qui persiste pendant l’exécution de toutes les tâches du jeu. Ce type de connexion n’est pris en charge que par les modules de juniper.device collecte.

    Les autres étapes utilisent connection: local. Pour utiliser les modules de juniper.device collection avec une connexion permanente, mettez à jour le playbook final afin d’utiliser connection: juniper.device.pyez.

  6. (Facultatif) Include gather_facts: no pour éviter de collecter des informations sur l’hôte cible, qui est le nœud de contrôle Ansible pour les connexions locales.
  7. (Facultatif) Référencez la juniper.device collection.

    Vous pouvez définir la collections clé dans le playbook, puis référencer uniquement le nom du module dans la tâche. Toutefois, la méthode recommandée consiste à omettre la collections clé et à référencer le contenu de la collection par son nom de collection complet (FQCN).

    Cet exemple omet la collections clé et utilise le nom de collection complet.

  8. Définissez une section de tâches et incluez une ou plusieurs tâches en tant qu’éléments de liste.
  9. (Facultatif) En guise de vérification supplémentaire, créez une tâche pour vérifier la connectivité NETCONF pour chaque équipement Junos.
  10. Créez des tâches qui utilisent les modules Juniper Networks et fournissez tous les paramètres de connexion et d’authentification nécessaires.

    Cet exemple utilise des clés SSH existantes à l’emplacement par défaut et ne fournit pas explicitement d’informations d’identification pour le facts module dans le playbook.

  11. (Facultatif) Définissez des tâches supplémentaires ou des jeux supplémentaires selon vos besoins.

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.