Présentation du fichier d’inventaire Ansible lors de la gestion des équipements Junos
Présentation des fichiers d’inventaire
Le fichier d’inventaire Ansible définit les hôtes et les groupes d’hôtes sur lesquels les commandes, les modules et les tâches d’un playbook opèrent. Le fichier peut être dans l’un des nombreux formats en fonction de votre environnement Ansible et de vos plugins. Les formats courants incluent INI et YAML.
L’emplacement par défaut du fichier d’inventaire est /etc/ansible/hosts. Vous pouvez également créer des fichiers d’inventaire spécifiques à un projet à d’autres emplacements, par exemple dans le répertoire playbook de votre projet. Votre fichier de configuration Ansible peut spécifier le chemin d’accès à un emplacement de fichier d’inventaire autre que celui par défaut. Vous pouvez également spécifier l’emplacement du fichier de stock lors de l’exécution d’un playbook.
Le fichier d’inventaire peut répertorier des hôtes individuels ou des groupes d’hôtes définis par l’utilisateur. Ainsi, vous pouvez organiser en groupes des équipements Junos ayant des rôles similaires. Vous pouvez alors effectuer les mêmes tâches opérationnelles et de configuration sur les appareils de ce groupe. Par exemple, si vous gérez un ou plusieurs datacenters, vous pouvez créer des groupes pour les commutateurs qui nécessitent le même ensemble d’opérations, par exemple en appliquant des configurations similaires et en mettant à niveau Junos OS.
Pour gérer les équipements Junos à l’aide d’Ansible, vous devez disposer d’un compte de connexion Junos OS avec les privilèges d’accès appropriés sur chaque équipement géré. Vous devez vous assurer que les noms d’utilisateur et les mots de passe ou les clés d’accès existent pour chaque hôte dans le fichier d’inventaire.
L’exemple de fichier d’inventaire au format INI suivant définit un hôte individuel, host1, et deux groupes d’hôtes, routers et switches. L’inventaire définit également un groupe network parent qui inclut les routers groupes et switches .
host1.example.com [routers] router1.example.com router2.example.com [switches] switch1.example.com switch2.example.com [network:children] routers switches
Pour plus d’informations sur le fichier d’inventaire Ansible, consultez la documentation officielle d’Ansible à l’adresse https://docs.ansible.com/projects/ansible/latest/inventory_guide/intro_inventory.html.
juniper.device Collecte : Variables de connexion et de système d’exploitation réseau
À partir de la juniper.device version 2.0.0, nous avons consolidé la collection Juniper Networks juniper.device et la collection Red Hat Ansible junipernetworks.junos en une seule juniper.device collection. Bien que vous exécutiez les modules sous le même espace de noms, chaque ensemble de modules utilise des valeurs de connexion et de système d’exploitation réseau Ansible différentes, vous ne pouvez donc pas mélanger les modules dans le même playbook.
Vous pouvez définir la connexion Ansible dans votre playbook, votre fichier d’inventaire, dans les fichiers de variables hôtes ou de groupe, ou dans les arguments de ligne de commande. Si vous définissez la connexion dans le fichier d’inventaire, définissez ansible_connection la valeur appropriée pour vos modules. Le Tableau 1 présente les valeurs de connexion pour chaque ensemble de modules. Pour les junipernetworks.junos modules, vous devez également définir ansible_network_os.
| Ensemble de modules | ansible_connection Valeur |
ansible_network_os Valeur |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
Au lieu de définir ansible_connection dans le fichier d’inventaire, vous pouvez également définir connection dans le jeu de votre playbook. Les deux paramètres prennent les mêmes valeurs.
Outre les variables de connexion et de système d’exploitation réseau requises, votre fichier d’inventaire peut éventuellement définir le nom d’utilisateur qu’Ansible utilise pour se connecter aux appareils. Il peut également spécifier un port, s’il est différent du port par défaut. Nous vous recommandons également de définir le chemin d’accès à l’interpréteur Python dans le fichier de configuration Ansible ou dans le fichier d’inventaire Ansible. La spécification du chemin de l’interpréteur Python évite les erreurs inutiles si Ansible ne parvient pas à localiser l’installation Python utilisée par votre environnement.
Les sections suivantes fournissent des exemples simplifiés de fichiers d’inventaire pour chaque ensemble de modules.
- Exemple de fichier d’inventaire pour les
juniper.devicemodules - Exemple de fichier d’inventaire pour les
junipernetworks.junosmodules
Exemple de fichier d’inventaire pour les modules juniper.device
Si vous utilisez les modules d’origine juniper.device pour gérer des équipements Junos, le fichier d’inventaire doit être défini ansible_connection comme local ou juniper.device.pyez.
Le fichier d’inventaire suivant définit un groupe nommé junos qui a trois hôtes. Les hôtes utilisent la local connexion pour se connecter aux appareils gérés.
[junos] router1.example.com router2.example.com router3.example.com [junos:vars] ansible_connection=local ansible_user=username ansible_port=port [all:vars] ansible_python_interpreter=python-interpreter-path
Exemple de fichier d’inventaire pour les modules junipernetworks.junos
Si vous utilisez les modules (juniper.device.junos_*modules) pour gérer les junipernetworks.junos équipements Junos, votre fichier d’inventaire doit définir les variables appropriées pour cet ensemble de modules. Vous pouvez spécifier la valeur à l’aide ansible_connection du nom ansible.netcommon.netconf complet ou ansible.netcommon.network_cli. Vous pouvez également spécifier netconf ou network_cli. Consultez la documentation du module pour vérifier les valeurs de connexion prises en charge pour chaque module.
Le fichier d’inventaire suivant définit un groupe nommé junos qui a trois hôtes. Ansible utilise la ansible.netcommon.netconf connexion pour se connecter aux appareils gérés. Le fichier d’inventaire comprend également la valeur requise ansible_network_os pour ces modules.
[junos] router1.example.com router2.example.com router3.example.com [junos:vars] ansible_connection=ansible.netcommon.netconf ansible_network_os=juniper.device.junos ansible_user=username ansible_port=port [all:vars] ansible_python_interpreter=python-interpreter-path