L’inventaire liste les machines qu’Ansible doit gérer, et la façon de s’y connecter.


Inventaire statique

# inventory.ini
[web]
web1.exemple.com
web2.exemple.com ansible_host=10.0.0.5
 
[db]
db1.exemple.com ansible_user=admin
 
[web:vars]
http_port=8080

Ou en YAML :

# inventory.yml
all:
  children:
    web:
      hosts:
        web1.exemple.com:
        web2.exemple.com:
          ansible_host: 10.0.0.5
    db:
      hosts:
        db1.exemple.com:
          ansible_user: admin

Les groupes (web, db) permettent de cibler un sous-ensemble de machines dans un playbook (hosts: web) ou en ligne de commande.


Inventaire dynamique

Pour du cloud (GCP, AWS…), l’inventaire statique est remplacé par un plugin d’inventaire dynamique qui interroge l’API du provider pour lister les instances à un instant T (ex. google.cloud.gcp_compute pour GCP), au lieu de maintenir une liste de machines à la main.


ansible.cfg — configuration du projet

[defaults]
inventory = inventory.ini
remote_user = deploy
host_key_checking = False
roles_path = ./roles

Fichier de config recherché dans le répertoire courant, ~/.ansible.cfg, ou /etc/ansible/ansible.cfg — dans cet ordre de priorité.


Paramètres de connexion

ParamètreRôle
ansible_hostIP/hostname réel si différent du nom d’inventaire
ansible_userUtilisateur SSH
ansible_ssh_private_key_fileClé privée à utiliser
ansible_connectionType de connexion (ssh par défaut, local, winrm…)

Cas particulier : Ansible piloté par Packer

Dans le projet, il n’y a pas d’inventaire écrit à la main : le provisioner ansible de Packer génère un inventaire éphémère pointant vers la seule VM temporaire qu’il vient de créer, et y injecte automatiquement les paramètres de connexion SSH (user = "packer" dans le bloc provisioner "ansible"). C’est ce qui permet à un playbook Ansible générique de tourner sans configuration réseau manuelle pendant un build d’image.


En relation avec