Objectif
Construire un inventaire YAML complet avec plusieurs groupes, un bloc vars partagé et un fichier host_vars dédié, puis valider la structure avec ansible-inventory.
Environnement disponible
Vous disposez de :
- 1 serveur de contrôle avec Ansible installé
- 3 clients Debian
nrd-web1(serveur web)nrd-db1(base de données)nrd-dck1(serveur Docker)
Informations de connexion
- Utilisateur :
root - Mot de passe :
formation
Ce que vous allez réaliser
- Localiser les IP des trois clients
- Créer l’inventaire avec les groupes
webservers,databasesetdocker-servers - Ajouter un bloc
varspartagé (utilisateur SSH commun à toute la flotte) - Créer un fichier
host_varspournrd-dck1avec une listedocker_stacks - Valider la structure avec
ansible-inventory --graph - Tester un pattern d’hôte combiné (
webservers:&docker-serversou équivalent)
Conseils
- Créez d’abord un dossier de travail (
mkdir ansible && cd ansible) pour garder tout organisé. - N’oubliez pas : le nom du fichier
host_varsdoit correspondre exactement au nom de l’hôte dans l’inventaire. ansible-inventory --graphaffiche l’arborescence complète de vos groupes — très utile pour repérer une erreur de structure avant même de lancer une commande.
🧪 Lab · membre
🧪 Démarrer — 30 minVoir la solutionMasquer la solution
Localiser les IP des trois clients depuis le serveur de contrôle
ping nrd-web1
ping nrd-db1
ping nrd-dck1
Créer le dossier de travail et le fichier d’inventaire
mkdir ansible && cd ansible
nano inventaire.yaml
# inventaire.yaml
all:
hosts:
nrd-web1:
ansible_host: <IP>
nrd-db1:
ansible_host: <IP>
nrd-dck1:
ansible_host: <IP>
vars:
ansible_user: root
children:
webservers:
hosts:
nrd-web1:
databases:
hosts:
nrd-db1:
docker-servers:
hosts:
nrd-dck1:
Créer le fichier host_vars dédié à nrd-dck1
mkdir host_vars
nano host_vars/nrd-dck1.yml
# host_vars/nrd-dck1.yml
docker_stacks:
- path: /containers/bookstack
- path: /containers/vaultwarden
docker_stacks_priority:
- path: /containers/traefik
extra_sleep: 15
Valider la structure de l’inventaire
ansible-inventory -i inventaire.yaml --graph
Vous devriez voir les trois groupes (webservers, databases, docker-servers) et leurs hôtes respectifs s’afficher en arborescence.
Vérifier que host_vars est bien pris en compte
ansible-inventory -i inventaire.yaml --host nrd-dck1
La liste docker_stacks doit apparaître dans le résultat JSON.
Tester un pattern combiné : ping sur webservers et databases, mais pas docker-servers
ansible webservers:databases -i inventaire.yaml -m ping