Utiliser le module Ansible pour installer des juniper.device.software Logiciels sur les équipements Junos

Vous pouvez utiliser le module Ansible pour installer des juniper.device.software logiciels sur des équipements exécutant Junos OS ou des équipements exécutant Junos OS Evolved.

Utiliser Ansible pour installer des Logiciels

Juniper Networks fournit des modules Ansible qui vous permettent d’installer une image logicielle sur des équipements Junos. Le Tableau 1 présente les modules. Si vous utilisez déjà un ensemble donné de modules de la juniper.device collection, utilisez le module pour cet ensemble.

Tableau 1 : Modules logiciels

Collecte

Ensemble de modules

Nom du module

juniper.device

juniper.device

juniper.device.software

junipernetworks.junos

juniper.device.junos_package

Les sections suivantes expliquent comment utiliser le juniper.device.software module pour installer un package logiciel sur un équipement Junos. Les sections décrivent comment spécifier l’emplacement de l’image logicielle ainsi que le processus et les options générales d’installation du logiciel. Les sections expliquent également comment effectuer des scénarios de mise à niveau plus spécialisés, tels qu’une mise à niveau d’hôte de machine virtuelle, une mise à niveau logicielle unifiée en service (ISSU unifiée) ou une mise à niveau logicielle ininterrompue (NSSU) sur des appareils prenant en charge ces fonctionnalités.

Spécification de l’emplacement de l’image du Logiciels

Lorsque vous utilisez le module pour installer un juniper.device.software logiciel sur des équipements Junos, vous pouvez télécharger le package logiciel sur le nœud de contrôle Ansible. Le module, par défaut, copie le package sur l’appareil cible avant d’effectuer l’installation. Pour les environnements Virtual Chassis mixtes, les packages logiciels doivent résider sur le nœud de contrôle Ansible. Pour les périphériques autonomes ou les environnements Virtual Chassis non mixtes, vous pouvez également demander au module d’installer une image logicielle qui réside déjà sur le périphérique Junos cible ou à une URL accessible depuis le périphérique cible.

Le Tableau 2 présente les arguments de module que vous devez définir en fonction de l’emplacement du progiciel. Le module doit toujours inclure l’argument local_package, pkg_setou remote_package . L’argument no_copy par défaut est false, ce qui indique au module de copier le package logiciel de l’emplacement spécifié sur le nœud de contrôle Ansible vers l’équipement cible.

Tableau 2 : Arguments de module pour Logiciels’emplacement du package

Logiciels emplacement du colis

no_copy Paramètre

local_package ou pkg_set Paramètre

remote_package Paramètre

Nœud de contrôle Ansible

Omettre ou définir sur false

Pour les appareils autonomes ou les environnements Virtual Chassis non mixtes :

Défini local_package sur le chemin d’accès au fichier, y compris le nom de fichier, du progiciel sur le nœud de contrôle local. Les chemins d’accès aux fichiers sont relatifs au répertoire du playbook.

(Facultatif) Chemin d’accès au fichier sur l’appareil cible sur lequel le progiciel est copié. Le répertoire par défaut est /var/tmp.

Si remote_package elle inclut un nom de fichier, il doit correspondre au nom de fichier spécifié dans local_package.

Pour les environnements Virtual Chassis mixtes :

Défini pkg_set sur une liste des chemins d’accès aux fichiers, y compris les noms de fichiers, d’un ou plusieurs packages logiciels sur le nœud de contrôle local. Les chemins d’accès aux fichiers sont relatifs au répertoire du playbook.

–

Emplacement distant

–

–

URL du point de vue de l’équipement Junos cible à partir duquel le package logiciel est installé.

Appareil cible

Défini sur true

–

Chemin d’accès au fichier sur l’appareil cible où le progiciel doit déjà résider. Le répertoire par défaut est /var/tmp.

Si le package logiciel réside sur le nœud de contrôle Ansible, incluez l’argument approprié à votre installation :

  • local_package: installe le logiciel sur un équipement Junos autonome ou sur des membres d’un Virtual Chassis non mixte. La valeur de l’argument est une chaîne unique spécifiant le chemin absolu ou relatif vers l’image logicielle.

  • pkg_set: installe le logiciel sur les membres d’un Virtual Chassis mixte. La valeur de l’argument est une liste de chaînes qui spécifient les chemins de fichiers absolus ou relatifs des images logicielles, sans ordre particulier, pour les différents membres de Virtual Chassis.

    Par exemple :

Par défaut, lorsque vous incluez l’argument local_package or pkg_set , le module copie tous les packages logiciels du nœud de contrôle Ansible vers le répertoire /var/tmp du périphérique Junos cible (périphérique individuel ou périphérique principal Virtual Chassis). Si vous souhaitez copier l’image local_package dans un autre répertoire, définissez l’argument remote_package et spécifiez le répertoire cible. Si l’argument remote_package inclut un nom de fichier, les noms de fichiers des local_package arguments et remote_package doivent être identiques, sinon le module génère une erreur.

Si le package logiciel réside déjà sur l’équipement Junos cible (équipement individuel ou équipement principal Virtual Chassis), le module doit inclure l’argument no_copy: true en plus de l’argument remote_package . L’argument remote_package spécifie le chemin d’accès à un package logiciel existant sur l’appareil cible. Si remote_package ne spécifie pas de répertoire, la valeur par défaut est /var/tmp.

Si le progiciel réside à un emplacement autre que le nœud de contrôle Ansible ou l’équipement cible, le module doit inclure l’argument remote_package et spécifier l’emplacement du progiciel progiciel. La valeur de remote_package est une URL du point de vue de l’équipement Junos cible. Pour plus d’informations sur les formats d’URL acceptables, reportez-vous à la section Format de spécification des noms de fichiers et des URL dans les commandes CLI de Junos OS.

Présentation du processus d’installation

Utiliser Ansible pour installer un package logiciel sur un équipement Junos, exécuter le juniper.device.software module et fournir les arguments nécessaires. Par exemple :

Lorsque vous exécutez le juniper.device.software module, il effectue les opérations suivantes :

  1. Compare la version de Junos OS spécifiée dans l’argument version , ou dans le nom de fichier du package logiciel si l’argument version est omis, à la version installée sur l’équipement géré. Si les versions installées et souhaitées sont identiques, le module ignore les étapes d’installation restantes et définit changed et failed sur false.
  2. Si le progiciel se trouve sur le nœud de contrôle Ansible et que le no_copy paramètre est omis ou défini sur false, le module effectue les opérations suivantes :
    • Calcule la somme de contrôle du ou des packages logiciels locaux à l’aide de l’algorithme spécifié dans l’argument checksum_algorithm . Les valeurs acceptables checksum_algorithm sont md5, sha1et sha256. La valeur par défaut est md5. Vous pouvez également fournir une somme de contrôle dans l’argument checksum .

    • Nettoie le stockage sur l’équipement cible afin de libérer de l’espace pour le progiciel, sauf si l’argument cleanfs est défini sur false.

    • SCP ou FTP copie tous les paquets sur l’appareil cible, si les fichiers portant les mêmes noms et sommes de contrôle ne résident pas déjà à l’emplacement cible sur l’appareil.

      Lorsque vous incluez local_package, le module copie le package dans le remote_package répertoire ou, s’il remote_package n’est pas spécifié, dans le répertoire /var/tmp . Lorsque vous incluez pkg_set, le module copie toujours les packages dans le répertoire /var/tmp du périphérique principal Virtual Chassis.

      Remarque :

      Si vous définissez cleanfs: true ou omettez l’argument, le module copie le package logiciel sur le périphérique même s’il existait initialement à l’emplacement cible. Cette copie se produit parce que l’opération de nettoyage du stockage supprime le fichier existant. Si vous définissez cleanfs: false et que le fichier réside déjà à l’emplacement cible, le module ignore l’opération de copie de fichier.

    • Calcule la somme de contrôle de chaque fichier distant et la compare à la somme de contrôle du fichier local.

Une fois que le progiciel est sur l’appareil cible, qu’il y soit téléchargé initialement ou copié par le module, le module effectue alors les opérations suivantes :

  1. Valide la configuration par rapport au nouveau package, sauf si l’argument validate est défini sur false.

    Remarque : À partir de juniper.device la version 2.0.4, le validate paramètre par défaut est true. Dans les versions antérieures, la valeur par défaut est false.
  2. Installe le package sur chaque moteur de routage individuel, sauf si all_re la valeur est .false

  3. Redémarre chaque moteur de routage mis à niveau, sauf si l’argument reboot est défini sur false.

Le software module vous permet d’enregistrer la progression de l’installation en incluant l’argument logfile module. Par défaut, seuls les messages de niveau de gravité AVERTISSEMENT ou supérieur sont enregistrés. Pour consigner les messages de niveau de gravité INFO ou supérieur, ce qui est nécessaire pour consigner les messages pour le processus d’installation général, exécutez le playbook avec l’option -v de ligne de commande ou --verbose .

Spécification de valeurs de délai d’attente

Le juniper.device.software module effectue des opérations sur une session NETCONF. Le délai d’expiration par défaut d’un RPC NETCONF est de 30 secondes. Pendant le processus d’installation, certaines opérations augmentent l’intervalle de délai d’expiration RPC comme suit :

  • Copie et installation du package sur l’appareil : 1800 secondes (30 minutes)

  • Calcul de la somme de contrôle : 300 secondes (5 minutes)

  • Nettoyage de l’entrepôt : 300 secondes (5 minutes)

Dans certains cas, le processus d’installation, le calcul de la somme de contrôle ou le nettoyage du stockage peuvent dépasser ces intervalles. Vous pouvez modifier la valeur du délai d’expiration de ces opérations en définissant les install_timeoutarguments , checksum_timeoutet cleanfs_timeout sur le nombre de secondes requis dans la liste des arguments du module. Par exemple :

Comment spécifier des options d’installation qui n’ont pas d’argument module équivalent

Lorsque vous utilisez le juniper.device.software module pour installer un logiciel sur un périphérique, le module appelle le RPC approprié pour les arguments d’installation inclus. Par exemple, le module invoque le RPC pour les <request-package-add> installations standard de Junos OS, le RPC pour les <request-vmhost-package-add> mises à niveau d’hôtes VM, le RPC pour les <request-package-in-service-upgrade> scénarios ISSU unifiés, etc.

Le module prend en charge des arguments explicites pour de nombreuses options d’installation, par exemple, l’option validate . Le module soutient également l’argument kwargs . L’argument vous permet d’inclure toutes les options supplémentaires prises en charge par le RPC. L’argument kwargs prend un dictionnaire de paires clé/valeur d’options supplémentaires prises en charge.

Pour obtenir la liste actuelle des options prises en charge par le module, consultez la documentation de référence de l’API pour le module. Pour obtenir la liste de toutes les options disponibles pour un RPC spécifique, reportez-vous à la documentation de la commande équivalente ou recherchez la balise request du RPC dans l’explorateur d’API XML de Junos.

Remarque :

Vous ne devez inclure que les options d’installation prises en charge par l’équipement Junos cible pour le RPC donné.

Dans le playbook suivant, le software module installe une nouvelle image logicielle sur les hôtes cibles. Le module inclut l’argument kwargs . unlink: true Cet argument, qui supprime le package logiciel du répertoire après une mise à niveau réussie, équivaut à inclure l’option <unlink/> dans le <request-package-add> RPC.

Mise à niveau d’un hôte de machine virtuelle

Sur les équipements dotés de moteurs de routage prenant en charge l’hôte de machine virtuelle, Junos OS s’exécute en tant que machine virtuelle sur un hôte Linux (hôte de machine virtuelle). Une mise à niveau de l’hôte de machine virtuelle nécessite un package d’installation de l’hôte de la machine virtuelle (junos-vmhost-install-x.tgz) et met à niveau le système d’exploitation hôte et les Junos OS compatibles. Dans la CLI, vous effectuez la mise à niveau à l’aide de la request vmhost software add commande mode opérationnel, qui correspond au <request-vmhost-package-add> RPC.

Le juniper.device.software module prend en charge l’argument en faveur de la mise à niveau d’un vmhost: true hôte de machine virtuelle. Lorsque l’argument est présent, le module effectue l’installation à l’aide du <request-vmhost-package-add> RPC.

Le playbook suivant met à niveau et redémarre le système d’exploitation Junos OS et le système d’exploitation hôte sur les équipements spécifiés :

Comment effectuer un ISSU ou un NSSU unifié

Le juniper.device.software module prend en charge l’exécution d’un ISSU unifié ou d’un NSSU sur les appareils qui prennent en charge la fonctionnalité et répondent aux exigences nécessaires. Pour plus d’informations sur les fonctionnalités unifiées d’ISSU et de NSSU, consultez la documentation logicielle de votre produit.

La fonctionnalité ISSU unifiée vous permet d’effectuer une mise à niveau entre deux versions différentes de Junos OS sans interruption sur le plan de contrôle et avec une interruption minimale du trafic. Pour effectuer un ISSU unifié, le software module doit inclure l’argument issu: true . Par exemple :

La fonctionnalité NSSU vous permet de mettre à niveau le logiciel Junos OS exécuté sur un commutateur ou un Virtual Chassis avec des moteurs de routage redondants avec une interruption minimale du trafic réseau. Pour effectuer un NSSU, le software module doit inclure l’argument nssu: true . Par exemple :

Installation de Logiciels sur un membre du Virtual Chassis EX Series

En règle générale, lorsque vous mettez à niveau un Virtual Chassis EX Series non mixte, vous suivez le processus d’installation décrit dans Présentation du processus d’installation pour mettre à niveau l’ensemble du Virtual Chassis. Toutefois, il peut arriver que vous deviez installer un logiciel sur des commutateurs membres spécifiques dans le Virtual Chassis. Le juniper.device.software module vous permet d’installer un package logiciel sur des commutateurs membres individuels dans un Virtual Chassis EX Series non mixte.

Pour installer un logiciel sur des membres spécifiques, incluez l’argument member_id et définissez une liste de chaînes qui spécifient les ID des membres. Le système installe le progiciel du périphérique principal Virtual Chassis sur les membres spécifiés.

Le playbook Ansible suivant met à niveau le logiciel sur le membre 0 et le membre 1 dans EX Series Virtual Chassis :

Exemple : Utiliser Ansible pour installer des Logiciels

Cet exemple utilise le module pour installer une image logicielle juniper.device.software sur un équipement exécutant Junos OS.

Exigences

Cet exemple utilise les composants matériels et logiciels suivants :

  • Serveur de gestion de la configuration exécutant Ansible 2.17 ou version ultérieure avec la juniper.device collection installée

  • Équipement Junos sur lequel NETCONF est activé et un compte utilisateur configuré avec les autorisations appropriées

  • Paire de clés publique/privée SSH configurée pour l’utilisateur approprié sur le nœud de contrôle Ansible et l’équipement Junos

  • Fichier d’inventaire Ansible existant avec les hôtes requis définis

Vue d’ensemble

Cet exemple présente un playbook Ansible qui utilise le juniper.device.software module pour mettre à niveau Junos OS sur les hôtes du groupe d’inventaire spécifié. Dans cet exemple, l’image logicielle réside sur le nœud de contrôle Ansible et le module copie l’image sur l’appareil cible avant de l’installer. Le module ne définit pas explicitement d’argument host , il fonctionne donc sur l’hôte par défaut, qui est {{ inventory_hostname }}.

Ce guide comprend la Check NETCONF connectivity tâche qui utilise le ansible.builtin.wait_for module pour essayer d’établir une session NETCONF avec l’équipement Junos à l’aide du port NETCONF 830 par défaut. Si le nœud de contrôle ne parvient pas à établir une session NETCONF avec un périphérique pendant l’exécution du playbook, il ignore les tâches restantes en cours de lecture pour ce périphérique.

La Install Junos OS package tâche exécute le juniper.device.software module à condition que la vérification NETCONF ait réussi. L’argument version définit la version de Junos OS souhaitée telle qu’elle serait signalée par la show version commande sur l’équipement Junos. Lors de l’exécution du playbook, le module vérifie d’abord que la version demandée n’est pas déjà installée sur l’appareil. Si la version demandée est différente de la version actuellement installée, le module installe la version demandée.

L’argument local_package définit le chemin du package logiciel Junos OS sur le nœud de contrôle Ansible. Lors de l’installation, le module :

  • Effectue une opération de nettoyage du stockage sur l’équipement cible

  • Copie l’image du logiciel dans le répertoire /var/tmp de l’appareil

  • Vérifie la somme de contrôle du fichier

  • Validation du nouveau logiciel par rapport à la configuration active

  • Installe le logiciel sur chaque moteur de routage sur l’hôte cible

Par défaut, le juniper.device.software module redémarre chaque moteur de routage une fois l’installation terminée. Toutefois, cette tâche est explicitement définie reboot: true pour plus de clarté.

La tâche stocke le résultat du module dans la response variable et notifie un gestionnaire. Si vous n’exécutez pas le playbook en utilisant le mode check, le gestionnaire tente alors d’établir wait_reboot une session avec l’appareil pour vérifier que l’appareil est de nouveau en ligne. La wait_time variable définit la durée pendant laquelle le nœud de contrôle tente de se reconnecter à l’appareil.

Cet exemple inclut le logfile paramètre permettant d’enregistrer la progression de l’installation. Ce journal est important à des fins de débogage en cas d’échec de l’installation, ainsi que pour la journalisation des dates et heures d’installation sur les appareils. L’utilisateur exécutant le playbook doit disposer des autorisations nécessaires pour écrire dans le fichier journal spécifié. Par défaut, seuls les messages de niveau de gravité AVERTISSEMENT ou supérieur sont enregistrés. L’exemple exécute le playbook avec la -v possibilité d’enregistrer les messages de niveau de gravité INFO ou supérieur pour surveiller l’installation.

La configuration

Création du playbook Ansible

Pour créer un playbook qui utilise le module pour installer une image logicielle juniper.device.software sur un équipement Junos :

  1. Incluez le passe-partout du playbook et de ce jeu, qui exécute les modules localement.

  2. Définissez ou importez toutes les variables nécessaires, qui incluent pour cet exemple la version de Junos OS souhaitée et le chemin d’accès à la nouvelle image, entre autres.

  3. (Facultatif) Créez une tâche pour vérifier la connectivité NETCONF.

  4. Créez la tâche pour installer le package Junos OS sur l’équipement et en informer le gestionnaire.

  5. (Facultatif) Créez une tâche pour imprimer la réponse du module.

  6. Créez le gestionnaire qui vérifie que l’appareil se ractive après le redémarrage.

    Le nom du gestionnaire doit être le même que celui référencé dans la tâche d’installation.

Résultats

Sur le nœud de contrôle Ansible, passez en revue le playbook terminé. Si le playbook n’affiche pas le code prévu, répétez les instructions de cet exemple pour corriger le playbook.

Exécuter le guide stratégique

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.

Vérification

Vérifiez l’installation

Objet

Vérifiez que l’installation du logiciel a réussi.

Mesures à prendre

La sortie du playbook doit indiquer toutes les tâches ayant échoué. Toutefois, vous pouvez également consulter le contenu du fichier journal défini dans le playbook pour plus de détails sur l’installation. Un exemple de sortie de fichier journal est présenté ici. Certains résultats ont été omis par souci de concision.

Signification

Le contenu du fichier journal indique que le playbook a copié et installé l’image sur les deux moteurs de routage de l’équipement cible.

Tableau de l’historique des modifications

La prise en charge des fonctionnalités est déterminée par la plateforme et la version que vous utilisez. Utilisez l’explorateur de fonctionnalités pour déterminer si une fonctionnalité est prise en charge sur votre plateforme.

Libération
Descriptif
2.0.4
À partir de juniper.device la version 2.0.4, le validate paramètre par défaut est true. Dans les versions antérieures, la valeur par défaut est false.