Introduction
Ansible est un outil d'automatisation informatique largement utilisé qui simplifie la gestion de l'infrastructure et des applications. Dans ce tutoriel, nous allons explorer comment définir le chemin par défaut du fichier d'inventaire dans Ansible, garantissant une gestion de l'infrastructure efficace et cohérente. Un fichier d'inventaire dans Ansible contient une liste d'hôtes qu'Ansible gère. En configurant un emplacement de fichier d'inventaire personnalisé, vous pouvez mieux organiser votre flux de travail d'automatisation.
Comprendre l'inventaire Ansible
Avant de configurer un chemin de fichier d'inventaire personnalisé, comprenons ce qu'est un inventaire Ansible et comment il fonctionne par défaut.
Qu'est-ce qu'un inventaire Ansible ?
Un inventaire Ansible est un fichier qui contient des informations sur les hôtes qu'Ansible gérera. Par défaut, Ansible recherche le fichier d'inventaire à /etc/ansible/hosts. L'inventaire peut être dans différents formats, mais le plus courant est un fichier de style INI ou un fichier YAML.
Vérifions si Ansible est correctement installé sur notre système :
ansible --version
Vous devriez voir une sortie similaire à celle-ci :
ansible [core 2.12.x]
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/labex/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3/dist-packages/ansible
executable location = /usr/bin/ansible
python version = 3.10.x (default, Ubuntu, etc.)
Maintenant, examinons l'emplacement par défaut du fichier d'inventaire :
cat /etc/ansible/hosts
Ce fichier peut être vide ou contenir des exemples de configurations d'hôtes. Le fichier d'inventaire par défaut ressemble souvent à ceci :
## Example inventory file
[webservers]
web1.example.com
web2.example.com
[dbservers]
db1.example.com
db2.example.com
Dans ce format :
[webservers]et[dbservers]sont des noms de groupes- Les noms d'hôtes ou les adresses IP répertoriés sous chaque groupe appartiennent à ce groupe
Pour notre lab, nous allons créer notre propre fichier d'inventaire personnalisé dans un autre emplacement.
Création d'un fichier d'inventaire personnalisé
Maintenant que nous comprenons ce qu'est un fichier d'inventaire, créons notre propre fichier d'inventaire personnalisé dans notre répertoire de projet.
Créer un répertoire pour les fichiers Ansible
Tout d'abord, accédons à notre répertoire de projet et créons un dossier dédié à nos fichiers Ansible :
cd ~/project
mkdir -p ansible/inventory
Créer un fichier d'inventaire personnalisé
Maintenant, créons un fichier d'inventaire simple dans notre nouveau répertoire :
cat > ansible/inventory/hosts.ini << 'EOF'
## Custom inventory file
[webservers]
web1.example.com
web2.example.com
[dbservers]
db1.example.com
db2.example.com
[local]
localhost ansible_connection=local
[all:vars]
ansible_user=ubuntu
EOF
Ce fichier d'inventaire définit trois groupes :
webservers: Contient deux serveurs webdbservers: Contient deux serveurs de base de donnéeslocal: Contient localhost avec un paramètre de connexion spécial
Vérifions notre fichier d'inventaire nouvellement créé :
cat ansible/inventory/hosts.ini
Vous devriez voir le contenu que nous venons de créer.
Ce fichier est maintenant prêt à être utilisé comme notre fichier d'inventaire personnalisé. Dans l'étape suivante, nous allons configurer Ansible pour utiliser ce fichier par défaut au lieu du fichier /etc/ansible/hosts à l'échelle du système.
Définition du chemin du fichier d'inventaire par défaut
Maintenant que nous avons créé notre fichier d'inventaire personnalisé, configurons Ansible pour l'utiliser comme fichier d'inventaire par défaut. Il existe plusieurs façons de le faire, mais nous nous concentrerons sur les deux méthodes les plus courantes.
Méthode 1 : Utilisation d'un fichier de configuration Ansible
Ansible recherche les fichiers de configuration dans l'ordre suivant :
- Variable d'environnement
ANSIBLE_CONFIG ansible.cfgdans le répertoire courant~/.ansible.cfg(répertoire personnel de l'utilisateur)/etc/ansible/ansible.cfg(à l'échelle du système)
Créons un fichier ansible.cfg dans notre répertoire de projet :
cat > ~/project/ansible/ansible.cfg << 'EOF'
[defaults]
inventory = ~/project/ansible/inventory/hosts.ini
host_key_checking = False
EOF
Dans ce fichier de configuration, nous avons défini :
inventory: Le chemin d'accès à notre fichier d'inventaire personnaliséhost_key_checking: Désactivé pour empêcher les invites de vérification des clés d'hôte SSH
Méthode 2 : Utilisation d'une variable d'environnement
Une autre façon de spécifier le fichier d'inventaire consiste à utiliser la variable d'environnement ANSIBLE_INVENTORY. Ceci est utile lorsque vous souhaitez utiliser temporairement un autre fichier d'inventaire sans modifier la configuration :
export ANSIBLE_INVENTORY=~/project/ansible/inventory/hosts.ini
Vérifions que notre configuration fonctionne en exécutant une simple commande Ansible :
cd ~/project/ansible
ansible --list-hosts all
Cette commande devrait lister tous les hôtes de notre fichier d'inventaire personnalisé :
hosts (5):
web1.example.com
web2.example.com
db1.example.com
db2.example.com
localhost
Désormais, Ansible utilisera notre fichier d'inventaire personnalisé par défaut lorsque nous exécuterons des commandes Ansible depuis le répertoire ~/project/ansible.
Vérification de la configuration de l'inventaire
Maintenant que nous avons configuré notre fichier d'inventaire personnalisé, vérifions qu'Ansible l'utilise correctement et explorons quelques commandes pour travailler avec l'inventaire.
Vérification de l'inventaire avec ansible-inventory
La commande ansible-inventory nous permet d'afficher et de valider notre configuration d'inventaire :
cd ~/project/ansible
ansible-inventory --list
Ceci affichera l'inventaire au format JSON :
{
"_meta": {
"hostvars": {
"localhost": {
"ansible_connection": "local"
}
}
},
"all": {
"children": ["dbservers", "local", "ungrouped", "webservers"]
},
"dbservers": {
"hosts": ["db1.example.com", "db2.example.com"]
},
"local": {
"hosts": ["localhost"]
},
"webservers": {
"hosts": ["web1.example.com", "web2.example.com"]
}
}
Pour un format plus lisible, nous pouvons utiliser l'option --graph :
ansible-inventory --graph
Ceci affichera l'inventaire dans une structure arborescente :
@all:
|--@dbservers:
| |--db1.example.com
| |--db2.example.com
|--@local:
| |--localhost
|--@ungrouped:
|--@webservers:
| |--web1.example.com
| |--web2.example.com
Test de la connexion à l'hôte local
Exécutons une simple commande ping pour vérifier que nous pouvons communiquer avec l'hôte local :
ansible local -m ping
Vous devriez voir une sortie similaire à :
localhost | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": false,
"ping": "pong"
}
Exécution d'une commande simple sur les hôtes
Nous pouvons également exécuter une commande sur nos hôtes en utilisant la commande ansible. Puisque nos exemples d'hôtes n'existent pas réellement, ciblons uniquement l'hôte local :
ansible local -a "uname -a"
Ceci exécutera la commande uname -a sur l'hôte local et affichera une sortie similaire à :
localhost | CHANGED | rc=0 >>
Linux ubuntu 5.15.0-1033-aws #37-Ubuntu SMP Wed Aug 16 07:38:46 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Ceci confirme qu'Ansible utilise correctement notre fichier d'inventaire personnalisé et peut exécuter des commandes sur les hôtes qui y sont définis.
Résumé
Dans ce tutoriel, vous avez appris à configurer et à définir le chemin d'accès à un fichier d'inventaire personnalisé dans Ansible. Vous comprenez maintenant :
- Ce qu'est un fichier d'inventaire Ansible et son emplacement par défaut
- Comment créer un fichier d'inventaire personnalisé avec des groupes d'hôtes
- Comment configurer Ansible pour utiliser votre fichier d'inventaire personnalisé par défaut en utilisant à la fois la méthode du fichier de configuration et les variables d'environnement
- Comment vérifier votre configuration d'inventaire à l'aide de diverses commandes Ansible
Ces compétences vous aideront à organiser votre flux de travail d'automatisation Ansible plus efficacement. En personnalisant l'emplacement du fichier d'inventaire, vous pouvez mieux gérer votre infrastructure en fonction de la structure et des exigences de votre projet.
Lorsque vous travaillez sur des projets plus importants, vous souhaiterez peut-être explorer les inventaires dynamiques ou utiliser Ansible Vault pour sécuriser les informations sensibles dans vos fichiers d'inventaire.


