TP 2 : Construire l'inventaire multi-groupes de Nordika

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

  1. Localiser les IP des trois clients
  2. Créer l’inventaire avec les groupes webservers, databases et docker-servers
  3. Ajouter un bloc vars partagé (utilisateur SSH commun à toute la flotte)
  4. Créer un fichier host_vars pour nrd-dck1 avec une liste docker_stacks
  5. Valider la structure avec ansible-inventory --graph
  6. Tester un pattern d’hôte combiné (webservers:&docker-servers ou é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_vars doit correspondre exactement au nom de l’hôte dans l’inventaire.
  • ansible-inventory --graph affiche 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 min
Voir 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