Comprendre Ansible pour les collections et modules Junos OS
Découvrez les collections et modules Ansible que vous pouvez utiliser pour gérer les équipements exécutant Junos OS et les équipements exécutant Junos OS Evolved.
Comprendre les collections Ansible et les modules de gestion des appareils Junos
Ansible est un framework d’automatisation informatique que vous pouvez utiliser pour gérer la configuration de l’infrastructure. Vous utilisez des modules Ansible, qui sont des unités de code discrètes, pour exécuter des fonctions spécifiques sur un nœud géré. Vous pouvez exécuter des modules individuels sur des hôtes distants pour effectuer des tâches ad hoc. Vous pouvez également exécuter des modules via des playbooks.
Juniper Networks fournit des modules Ansible que vous pouvez utiliser pour gérer les équipements Junos. Les modules Ansible sont regroupés et distribués via Ansible Content Collections, qui sont hébergés dans le référentiel Ansible Galaxy . Les collections Ansible sont un format permettant de distribuer du contenu Ansible qui n’est pas inclus dans l’installation principale d’Ansible. Les collections peuvent inclure un large éventail de contenus, notamment des modules, des playbooks, des plug-ins et des rôles. Les collections ont également leurs propres dépôts, de sorte qu’elles peuvent être développées et publiées indépendamment de l’installation principale d’Ansible.
Le Tableau 1 présente les ensembles de contenus disponibles pour la gestion des équipements Junos. Juniper Networks fournit la juniper.device collecte. juniper.device À partir de la version 2.0.0, nous avons consolidé la collection Juniper Networks juniper.device et la collection Red Hat Ansible junipernetworks.junos en une seule collection contenant les deux ensembles de modules.
| Collecte | Ensemble de modules | Descriptif |
|---|---|---|
juniper.device |
Modules de gestion des équipements Junos. Juniper Networks fournit et gère cette collection en tant que projet open source. |
|
|
( |
Modules de gestion des équipements Junos. À l’origine, l’équipe réseau Red Hat Ansible s’occupait de cette collection. Dans |
Comprendre la juniper.device collection fusionnée
Présentation de la fusion
Avant la juniper.device version 2.0.0, la collection Juniper Networks juniper.device et la collection Red Hat Ansible junipernetworks.junos étaient des collections distinctes distinctes. Chaque propriétaire de collection a maintenu sa collection respective. À partir de juniper.device la version 2.0.0, nous avons fusionné la junipernetworks.junos collection dans la juniper.device collection. Juniper Networks conserve la collection fusionnée à l’avenir.
Nous nous référerons à la juniper.device collection pour indiquer l’ensemble combiné des modules. Pour distinguer les ensembles de modules de la collection, nous nous référerons aux modules comme suit :
-
juniper.devicemodules oujuniper.devicemodules d’origine -
junipernetworks.junosModules oujuniper.device.junos_*modules
Lorsque vous installez la juniper.device collection, vous pouvez l’utiliser juniper.device.module_name pour exécuter des modules à partir de l’un ou l’autre ensemble de modules. Pour continuer à utiliser les playbooks existants qui font référence junipernetworks.junos.module_nameà , vous devez également installer la junipernetworks.junos collection. Pour exécuter les modules en utilisant l’un junipernetworks.junos ou l’autre des espaces de noms, vous devez définir ansible_network_os sur juniper.device.junos. Sinon, tout le reste reste reste le même en utilisant l’un ou l’autre ensemble de modules.
Bien que la juniper.device collection comprenne les deux ensembles de modules, chaque ensemble de modules utilise des valeurs de connexion Ansible et des valeurs de système d’exploitation réseau différentes. Par conséquent, les deux ensembles de modules ne peuvent pas utiliser le même fichier de stock et vous ne pouvez pas mélanger les ensembles de modules dans le même playbook. Ainsi, nous vous recommandons de sélectionner un ensemble de modules à utiliser pour vos playbooks et tâches. L’ensemble que vous sélectionnez est une question de préférence. Pour vous aider à déterminer quel ensemble de modules convient le mieux à votre environnement, nous avons fourni une vue d’ensemble et une comparaison de haut niveau des deux ensembles.
Comparaison des ensembles de modules
La juniper.device collection et la junipernetworks.junos collection ont été construites à l’origine pour des objectifs et des cas d’utilisation différents. Juniper Networks a conçu les juniper.device modules de manière à fournir aux utilisateurs un accès direct à l’ensemble des fonctionnalités de Junos OS. Red Hat a développé les junipernetworks.junos modules en utilisant une approche cohérente appliquée à toutes les collections réseau gérées par Red Hat. Cette approche a permis d’utiliser des modèles de configuration pour une gestion rationalisée et reproductible des configurations.
Hormis quelques différences notables, les juniper.device modules et les junipernetworks.junos modules offrent des fonctions similaires pour la gestion des équipements Junos. Les deux ensembles de modules vous permettent de :
-
Obtenir des informations sur les appareils
-
Exécuter des commandes et des RPC sur un appareil
-
Installer des packages logiciels
-
Exécuter des opérations ping à partir d’un appareil
-
Configurer un appareil
Les deux ensembles de modules offrent des options similaires pour configurer les appareils. Par exemple, vous pouvez :
-
Charger les données de configuration dans l’un des formats acceptés à partir d’un fichier
-
Chargez les données de configuration sous forme de
setcommandes fournies dans les arguments du module -
Annuler la configuration
-
Remplacement de l’ensemble de la configuration
-
Spécifier le format et l’opération de chargement pour le chargement des données de configuration
-
Validez la configuration et incluez les options de commit courantes
Les ensembles de modules présentent également quelques différences en ce qui concerne les opérations de configuration. Les junipernetworks.junos modules fournissent de nombreux modèles de configuration qui vous permettent de configurer facilement des instructions communes pour des zones spécifiques de la hiérarchie de configuration. Par exemple, vous pouvez configurer des options communes pour OSPF ou des routes statiques.
De même, les juniper.device modules offrent des capacités de configuration supplémentaires. Vous pouvez comparer les configurations, charger la configuration de secours et charger les données de configuration à l’aide d’un modèle Jinja2. Vous pouvez également sélectionner le mode de configuration. Par exemple, vous pouvez utiliser le mode batch ; configurer une copie privée de la configuration candidate ; ou configurer la base de données dynamique ou éphémère. Les juniper.device modules fournissent également des options de validation supplémentaires pour synchroniser la configuration, valider les modifications vides et ignorer les avertissements de validation.
Une autre différence clé entre les ensembles de modules est qu’ils s’intègrent juniper.device à plusieurs autres produits Juniper Networks. Par exemple, vos playbooks Ansible peuvent référencer les tables opérationnelles de Junos PyEZ pour récupérer les données d’état opérationnel d’un équipement. Les playbooks Ansible peuvent également effectuer des opérations Junos Snapshot Administrator in Python (JSNAPy). JSNAPy vous permet de capturer et d’auditer des instantanés de l’environnement d’exécution de vos équipements Junos. Ainsi, vous pouvez utiliser vos tables Junos PyEZ existantes et vos fichiers de configuration et de test JSNAPy dans vos playbooks Ansible.
Exécuter des modules sur des équipements Junos
Pour utiliser des collections hébergées dans le référentiel Ansible Galaxy, vous devez d’abord installer Ansible sur le nœud de contrôle, puis installer la collection. Pour plus d’informations sur l’installation de la collection, reportez-vous à la section Configuration requise d’Ansiblejuniper.device pour le serveur Junos OS.
Les modules Ansible peuvent effectuer des opérations sur un nœud géré. En règle générale, le nœud de contrôle Ansible envoie un module au nœud géré pour effectuer l’opération. Le nœud exécute le module puis le supprime. Dans ce scénario, le nœud géré doit avoir la capacité d’exécuter le module. Étant donné que la plupart des modules Ansible sont écrits en Python, Ansible nécessite généralement Python sur le nœud géré.
Les modules de la juniper.device collection, cependant, ne nécessitent pas Python sur les nœuds gérés. Contrairement à l’opération typique, le nœud de contrôle Ansible exécute les modules localement. Les modules utilisent l’API XML de Junos et NETCONF pour s’interfacer avec le nœud géré. Cette méthode d’exécution vous permet d’utiliser Ansible pour gérer n’importe quel équipement Junos pris en charge. La figure 1 illustre la communication entre le nœud de contrôle Ansible et un équipement Junos géré.
Junos
Pour utiliser les juniper.device modules ou les junipernetworks.junos modules, votre playbook ou commande Ansible doit :
-
Spécifier la collection ou FQCN : pour spécifier la collection, incluez la
collectionsclé dans la lecture. Vous pouvez également omettre la clé et référencer lecollectionscontenu de la collection par son nom de collection complet (FQCN), qui est la méthode recommandée. -
Exécuter les modules localement sur le nœud de contrôle : pour exécuter les modules Ansible localement, vous devez définir les paramètres de connexion appropriés dans votre playbook, votre fichier d’inventaire ou vos options de commande. Définissez le
connectionparamètre dans le playbook ou définissez leansible_connectionparamètre dans le fichier d’inventaire ou les fichiers de variables hôtes ou de groupe. Pour lesjunipernetworks.junosmodules, vous devez également spécifier leansible_network_osparamètre. Vous définissez généralement ce paramètre dans le fichier d’inventaire. Le Tableau 2 présente les valeurs prises en charge.Tableau 2 : Paramètres de connexion Ensemble de modules Guide de jeu Fichier de stock juniper.device
(modules d’origine)-
connection: (local | juniper.device.pyez)
-
ansible_connection=(local | juniper.device.pyez)
junipernetworks.junos
(tous lesjunos_*modules saufjunos_netconfetjunos_ping)-
connection: netconf
-
ansible_connection=netconf -
ansible_network_os=juniper.device.junos
junipernetworks.junosjunos_netconf( etjunos_ping)-
connection: network_cli
-
ansible_connection=network_cli -
ansible_network_os=juniper.device.junos
-
-
Fournissez les informations de connexion et d’authentification appropriées pour vous connecter à l’équipement géré.
Vous pouvez exécuter des modules Ansible à l’aide de n’importe quel compte utilisateur ayant accès à l’équipement Junos géré. Lorsque vous exécutez des modules Ansible, les privilèges d’accès au compte utilisateur Junos OS sont appliqués. La classe configurée pour le compte d’utilisateur Junos OS détermine les autorisations. Ainsi, si un utilisateur exécute un module qui charge des modifications de configuration sur un appareil, l’utilisateur doit disposer des autorisations nécessaires pour modifier les parties pertinentes de la configuration.
Les sections suivantes fournissent des exemples de playbooks et de fichiers d’inventaire pour les différents ensembles de modules.
- Exemple de guide pour
juniper.deviceles modules - Exemple de fichier d’inventaire et de guide pour
junipernetworks.junosles modules
Exemple de playbook pour les modules juniper.device
Le playbook suivant exécute le juniper.device.facts module pour récupérer les informations sur l’appareil et les enregistrer dans un fichier. Dans cet exemple, nous définissons le type de connexion dans le playbook au lieu du fichier d’inventaire. L’utilisateur s’authentifie auprès de l’appareil à l’aide de clés SSH chargées dans un agent de clé SSH.
---
- name: Get Device Facts
hosts: junos
connection: local
gather_facts: no
tasks:
- name: Retrieve facts from a Junos device
juniper.device.facts:
savedir: "{{ playbook_dir }}"
- name: Print version
ansible.builtin.debug:
var: junos.version
Vous pouvez également effectuer des opérations ad hoc sur la ligne de commande. La commande suivante exécute le module et récupère les informations sur les juniper.device.facts équipements à partir des hôtes du groupe junosd’inventaire.
user@ansible-cn:~$ ansible --connection local -i production junos -m juniper.device.facts
Exemple de fichier d’inventaire et de guide pour les modules junipernetworks.junos
Si vous utilisez l’ensemble de junipernetworks.junos modules, vous pouvez définir les variables et ansible_network_os dans votre fichier d’inventaire ansible_connection ou vos fichiers de variables hôte ou de groupe. L’exemple de fichier d’inventaire suivant définit les paramètres de connexion pour le groupe dc1 sous dc1:vars.
[dc1] switch1.example.com [dc1:vars] ansible_connection=netconf ansible_network_os=juniper.device.junos
Le playbook suivant exécute le junipernetworks.junos.junos_facts module sous l’espace de juniper.device noms. Le playbook fait référence au dc1 groupe, qui définit les valeurs de connexion et de système d’exploitation réseau appropriées dans le fichier d’inventaire.
- name: Get Device Facts
hosts: dc1
gather_facts: no
tasks:
- name: Retrieve facts from a Junos device
juniper.device.junos_facts:
register: response
- name: Print version
ansible.builtin.debug:
var: response.ansible_facts.ansible_net_version
Modules juniper.device
Le tableau 3 présente les modules originaux juniper.device de la juniper.device collection. Pour obtenir la liste des modules actuels, la documentation et des exemples d’utilisation des modules, voir https://ansible-juniper-collection.readthedocs.io.
|
Nom du module |
Descriptif |
Connexions Ansible prises en charge |
|---|---|---|
|
|
Exécutez des commandes en mode opérationnel sur le périphérique Junos et enregistrez la sortie localement. |
|
|
|
Gérez la configuration des équipements Junos. |
|
|
|
Récupérez des informations spécifiques à l’équipement sur l’hôte distant, notamment la version de Junos OS, le numéro de série et le numéro de modèle du matériel. |
|
|
|
Transférez un fichier entre le nœud de contrôle Ansible local et l’équipement Junos. |
|
|
|
Exécutez des tests Junos Snapshot Administrator in Python (JSNAPy) via Ansible. |
|
|
|
Exécutez la |
|
|
|
Effectuez une détection de chemin MTU (PMTUD) sur les équipements Junos. |
|
|
|
Exécutez des RPC Junos OS. |
|
|
|
Installez un progiciel et redémarrez un équipement Junos. |
|
|
|
Créez un cluster de châssis SRX Series pour les pare-feu SRX Series compatibles avec les clusters. |
|
|
|
Effectuez des opérations système sur les équipements Junos, y compris la réinitialisation, le redémarrage ou l’arrêt de l’équipement. |
|
|
|
Utilisez les tables et les vues opérationnelles de Junos PyEZ pour récupérer des informations opérationnelles à partir des équipements Junos. |
|
junipernetworks.junos Modules
À partir de juniper.device la version 2.0.0, la juniper.device collection comprend les junipernetworks.junos modules. Le tableau 4 présente les junipernetworks.junos modules de la juniper.device collection. L’ensemble des modules vous permet d’effectuer des tâches opérationnelles. Il comprend également de nombreux modules de modèles de configuration qui permettent de configurer des paramètres communs pour diverses fonctionnalités, protocoles et services sur les équipements Junos.
| Nom du module | Descriptif | Connexions Ansible prises en charge |
|---|---|---|
| Modules opérationnels | ||
|
|
Exécutez des commandes en mode opérationnel sur l’équipement Junos. |
|
|
|
Récupérez les informations spécifiques à l’équipement à partir de l’hôte distant. |
|
|
|
Installez un progiciel et redémarrez un équipement Junos. |
|
|
|
Exécutez la |
|
|
|
Exécutez des RPC Junos OS via NETCONF sur un équipement Junos. |
|
| Configuration Modules | ||
|
|
Appliquez des filtres de pare-feu sur une interface. |
|
|
|
Configurez les filtres de pare-feu, parfois appelés listes de contrôle d’accès (ACL). |
|
|
|
Configurez les bannières. |
|
|
|
Gérez les attributs de la famille d’adresses BGP des interfaces. |
|
|
|
Configurez les propriétés globales de BGP. |
|
|
|
Gérez la configuration des équipements Junos. |
|
|
|
Configurez le nom d’hôte de l’appareil. |
|
|
|
Configurez les propriétés physiques et logiques de base de l’interface. |
|
|
|
Configurer les interfaces L2. |
|
|
|
Configurez les interfaces L3. |
|
|
|
Configurez les propriétés globales LACP (Link Aggregation Control Protocol) pour les interfaces Ethernet agrégées. |
|
|
|
Gérer les attributs LACP d’une interface. |
|
|
|
Configurez les LAG (Link Aggregation Groups). |
|
|
|
Configurez les paramètres globaux du protocole LLDP (Link Layer Discovery Protocol). |
|
|
|
Gérez les attributs LLDP d’une interface. |
|
|
|
Configurez la journalisation du système. |
|
|
|
Configurez le service système NETCONF. |
|
|
|
Configurez le protocole NTP (Network Time Protocol). |
|
|
|
Gérez la configuration OSPF des interfaces. |
|
|
|
Configurez OSPFv2. |
|
|
|
Configurez OSPFv3. |
|
|
|
Configurez les listes de préfixes de la politique de routage. |
|
|
|
Configurez les instances de routage. |
|
|
|
Configurez les options de routage. |
|
|
|
Configurer et gérer les politiques de sécurité. |
|
|
|
Configurez les paramètres de stratégie de sécurité globale. |
|
|
|
Configurez les zones de sécurité. |
|
|
|
Gérez la configuration du serveur SNMP. |
|
|
|
Configurez des routes statiques. |
|
|
|
Gérez le nom d’hôte et la configuration DNS. |
|
|
|
Configurez les comptes d’utilisateurs locaux. |
|
|
|
Configurez les VLAN. |
|
|
|
Gérez les définitions VRF sur l’appareil. |
|