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=8080Ou 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: adminLes 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 = ./rolesFichier 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ètre | Rôle |
|---|---|
ansible_host | IP/hostname réel si différent du nom d’inventaire |
ansible_user | Utilisateur SSH |
ansible_ssh_private_key_file | Clé privée à utiliser |
ansible_connection | Type 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
- Architecture — Vue d’ensemble — hub architecture
- Playbooks et tasks — ce qui s’exécute une fois connecté
- Provisioners — intégration côté Packer