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 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.device collection comprend les modules originaux juniper.device et les junipernetworks.junos modules.

  • 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 :

  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 virgules (ou des deux-points) des hôtes ou des groupes d’hôtes sur lesquels les modules fonctionneront ; spécifiez all d’indiquer tous les hôtes dans le fichier d’inventaire.

    Le fichier d’inventaire Ansible doit définir tous les hôtes ou groupes d’hôtes que vous référencez dans le playbook.

  5. (Facultatif) Inclure gather_facts: no pour empêcher la collecte de faits pour l’hôte cible, qui pour les connexions locales est le nœud de contrôle Ansible.
  6. (Facultatif) Référencez la 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.

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

    Cet exemple utilise des clés SSH chargées dans un agent de clé SSH et ne fournit pas explicitement d’informations d’identification pour le facts module dans le playbook.

  10. (Facultatif) Définissez des tâches ou des lectures supplémentaires selon les besoins.

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.

Pour exécuter le playbook :

  • Exécutez la ansible-playbook commande sur le nœud de contrôle et fournissez le chemin du playbook et toutes les options requises.