Ansible · Inventory

Inventory

Structurez des hôtes, groupes, enfants et variables dans des inventories INI ou YAML lisibles.

Leçon disponible
20 min

Objectifs

  • Décrire un inventory statique et ses groupes.
  • Utiliser children, host variables et group variables.
  • Lire les formats INI et YAML.
  • Contrôler l’inventory avec ansible-inventory.

Construire un inventory Ansible

L’inventory indique à Ansible quelles machines peuvent être ciblées et comment les regrouper. Un inventory statique est un fichier maintenu avec le projet ; des plugins dynamiques existent, mais cette leçon se concentre sur une base simple et vérifiable.

Utilisez des noms logiques stables et des adresses réservées à la documentation dans les exemples. La variable ansible_user peut désigner un compte d’automatisation, mais les secrets de connexion ne doivent pas être écrits en clair.

Format INI : hôtes, groupes et enfants

Les en-têtes [web] et [db] définissent des groupes. Le suffixe :children compose un groupe à partir d’autres groupes ; :vars porte des variables communes au groupe.

inventory.ini
[web]
web01 ansible_host=192.0.2.10 ansible_user=automation
web02 ansible_host=192.0.2.11 ansible_user=automation

[db]
db01 ansible_host=192.0.2.20 ansible_user=automation

[production:children]
web
db

[web:vars]
http_port=80

Les adresses 192.0.2.0/24 sont réservées à la documentation. Remplacez-les uniquement dans un environnement autorisé et n’ajoutez aucun mot de passe en clair.

Le même principe en YAML

Le format YAML rend l’imbrication explicite. all contient ici un groupe production qui référence web et db, tandis que les hôtes et variables restent proches de leur groupe.

inventory.yml
all:
  children:
    production:
      children:
        web:
          hosts:
            web01:
              ansible_host: 192.0.2.10
            web02:
              ansible_host: 192.0.2.11
          vars:
            ansible_user: automation
            http_port: 80
        db:
          hosts:
            db01:
              ansible_host: 192.0.2.20
          vars:
            ansible_user: automation
Variables séparées par groupe et par hôte
group_vars/
  web.yml
host_vars/
  web01.yml

Valider avant de cibler

Le graphe permet de contrôler rapidement l’appartenance aux groupes. La sortie complète permet d’inspecter la structure et les variables résolues ; traitez-la comme sensible si elle contient des informations internes.

  • Choisissez des noms de groupes explicites comme web, db ou production.
  • Séparez les inventories par environnement au lieu de mélanger production et test.
  • Placez les variables communes dans group_vars et les exceptions dans host_vars.
Afficher la hiérarchie
ansible-inventory -i inventory.ini --graph
Afficher l’inventory résolu
ansible-inventory -i inventory.ini --list

Mini résumé

  • Un inventory statique peut être écrit en INI ou en YAML.
  • Les groupes, children, group_vars et host_vars organisent les cibles et variables.
  • ansible-inventory --graph et --list révèlent la structure réellement comprise.
  • Les identifiants sensibles n’ont pas leur place en clair dans l’inventory.

Outils associés

Construire une commande Ansible

Utilisez Ansible Command Builder pour composer une commande ad-hoc ou de diagnostic et comprendre ses options sans l’exécuter.

Ouvrir l’outil

Mini quiz

Trois questions pour vérifier les notions essentielles de la leçon.

1. À quoi sert un groupe :children dans un inventory INI ?
2. Quelle commande affiche la hiérarchie des groupes ?
3. Où faut-il écrire un mot de passe SSH réel ?