Vue d'ensemble
| Terme | Sens |
|---|---|
| nœud de contrôle | machine où Ansible est installé et lancé |
| hôte géré | machine pilotée : SSH + Python, pas d'agent |
| inventaire | liste des hôtes et groupes (all, ungrouped implicites) |
| playbook | fichier YAML : plays, tâches, modules |
| module | action idempotente sur une ressource (ansible.builtin.dnf…) |
| rôle | dossier réutilisable : tasks, handlers, defaults, vars, templates, files, meta |
| handler | tâche exécutée à la fin du play, seulement si notifiée par un changement |
| fait (fact) | information découverte sur l'hôte (ansible_facts) |
ansible-core / ansible | moteur minimal / paquet « piles incluses » avec collections |
Lecture seule
ansible --versionansible-inventory -i inventaire.ini --graphansible local -i inventaire.ini -m ansible.builtin.pingansible local -i inventaire.ini -m ansible.builtin.setupBloc actif : la touche C copie la commande seule, sans invite ni sortie.
- Contexte : Terminal ; inventaire de test avec
localhost ansible_connection=local. - Droits : utilisateur normal.
- Effet : affiche la version, l'arbre de l'inventaire, teste la connexion Python et liste les faits ; ne modifie rien.
- Vérification :
SUCCESSpourping; les faits s'affichent en JSON. - Retour arrière : sans objet.
Inventaire minimal
[local]
localhost ansible_connection=localParamètres de connexion : ansible_connection, ansible_host, ansible_user, ansible_python_interpreter. Variables : group_vars/ et host_vars/. Plusieurs -i : le dernier l'emporte.
Playbook minimal
- name: Préparer un dossier de test
hosts: local
gather_facts: false
tasks:
- name: Créer le dossier de sortie
ansible.builtin.file:
path: ./sortie
state: directory
mode: "0755"Vérifier avant d'agir
ansible-playbook -i inventaire.ini preparer.yml --syntax-checkansible-playbook -i inventaire.ini preparer.yml --list-hostsansible-playbook -i inventaire.ini preparer.yml --list-tasksansible-playbook -i inventaire.ini preparer.yml --check --diff --limit localBloc actif : la touche C copie la commande seule, sans invite ni sortie.
- Contexte :
preparer.ymletinventaire.inidans un dossier de test. - Droits : utilisateur normal.
- Effet : contrôle de syntaxe, listes et simulation ; aucune modification de la cible.
- Vérification :
changed=Nen simulation ; rien n'existe encore sur la cible. - Retour arrière : sans objet.
Attention : --check ne simule pas command ni shell ; un module qui ne le gère pas ne rapporte rien. Une simulation verte n'est pas une garantie. Sous --check, check_mode: false sur une tâche l'exécute réellement.
Exécuter pour de bon
Attention, effet notable. Cette commande a un effet notable. Lire le contexte, les droits et l’effet attendu indiqués après le bloc ; ne jamais l’exécuter sur un système réel sans validation, d’abord dans un environnement de test.
ansible-playbook -i inventaire.ini preparer.ymlBloc actif : la touche C copie la commande seule, sans invite ni sortie.
- Contexte : après
--check --diffrelu ;localhostou hôte jetable. - Droits : utilisateur normal ; sur un hôte distant, utilisateur SSH (et
sudosibecome). - Effet : applique l'état décrit par le playbook ; ici, crée un dossier.
- Vérification : bilan
changed=1au premier passage,changed=0au second (idempotence). - Retour arrière : supprimer ce qui a été créé (en relisant le nom), ou détruire l'hôte jetable (instantané avant).
Options utiles d'ansible-playbook
| Option | Rôle |
|---|---|
-i FICHIER | inventaire |
--limit MOTIF | restreindre les hôtes |
-e nom=valeur | variable en ligne de commande (priorité la plus haute) |
--check / --diff | simuler / montrer l'avant-après |
--syntax-check, --list-hosts, --list-tasks | vérifications sans exécution |
--ask-become-pass (-K) | mot de passe sudo saisi au prompt |
--ask-vault-pass, --vault-password-file | mot de passe du coffre (fichier hors dépôt) |
-v à -vvv | verbosité (peut afficher des secrets : prudence) |
Variables, faits, handlers, modèles
- name: Exemple condensé
hosts: local
gather_facts: true
vars:
mode_reglage: essai
tasks:
- name: Déposer le fichier de réglages
ansible.builtin.template:
src: templates/reglages.conf.j2
dest: ./sortie/reglages.conf
mode: "0644"
notify: Signaler le changement
handlers:
- name: Signaler le changement
ansible.builtin.debug:
msg: "Réglages modifiés sur {{ inventory_hostname }} ({{ ansible_facts['os_family'] }})"- Handlers : après toutes les tâches, dans l'ordre de définition, une seule fois ;
meta: flush_handlerspour avancer. - Rendu Jinja2 sur le nœud de contrôle ;
template:src,dest,owner,group,modeentre guillemets,validate,backup. - Valeur YAML commençant par
{{: entre guillemets. - Variables magiques :
inventory_hostname,groups,group_names,hostvars,playbook_dir.
Ansible Vault
Attention, effet notable. Cette commande peut créer ou modifier une configuration. Lire le contexte, les droits et l’effet attendu indiqués après le bloc ; ne jamais l’exécuter sur un système réel sans validation, d’abord dans un environnement de test.
ansible-vault create --ask-vault-pass secrets-demo.ymlansible-vault view --ask-vault-pass secrets-demo.ymlansible-vault encrypt_string --ask-vault-pass --stdin-name 'mot_de_passe_demo'Bloc actif : la touche C copie la commande seule, sans invite ni sortie.
- Contexte : dossier de test jetable ; mot de passe de coffre et valeurs fictifs. L'option
--stdin-namedeencrypt_stringest à confirmer avecansible-vault encrypt_string --help(non relue). - Droits : utilisateur normal.
- Effet :
createécrit un fichier chiffré ;viewl'affiche ;encrypt_stringchiffre une valeur saisie au prompt (pas dans la ligne de commande, qui resterait dans l'historique du shell). - Vérification :
head -1 secrets-demo.ymlcommence par$ANSIBLE_VAULT;. - Retour arrière : supprimer le fichier de test.
Autres sous-commandes : edit, rekey, decrypt (laisse un fichier en clair sur le disque).
Attention : jamais de secret en clair dans le dépôt, un playbook, une variable -e ou un journal. Le mot de passe du coffre va dans le Trousseau macOS (bin/secret), jamais dans un fichier versionné. Sur une tâche sensible : no_log: true et diff: false ; ne jamais debug une variable secrète.
Élévation de droits et Linux/RHEL
| Besoin | Élément |
|---|---|
| élévation | become: true, become_user, become_method ; -b / -K en ligne de commande |
| paquets RHEL-like | ansible.builtin.dnf (state: present/latest/absent), exige python3-dnf sur la cible |
| services | ansible.builtin.service, ansible.builtin.systemd |
| fichiers | file, copy, template, lineinfile |
| utilisateurs | user, group |
| VMware | collection community.vmware (modules dépréciés : lire la page avant) ; hors périmètre ici |
become au niveau de la tâche plutôt que du play ; mot de passe sudo au prompt, jamais dans l'inventaire.
Pièges fréquents
| Piège | Parade |
|---|---|
--check vert mais command ignoré | relire le playbook, utiliser des modules idempotents |
| Indentation YAML incorrecte | --syntax-check, éditeur avec visualisation des espaces |
{{ var }} sans guillemets | mettre la valeur entre guillemets |
Secret affiché par -vvv ou debug | no_log: true, pas de -vvv sur les tâches sensibles |
| Exécution sur le mauvais inventaire | --list-hosts et --limit avant l'exécution réelle |
| Python absent sur l'hôte géré | prérequis : Python et SSH |
Collection absente (ansible-core) | installer la collection à part (procédure non vérifiée) |
Points non vérifiés
- Versions d'Ansible, de Python et des distributions cibles de Stéphane : inconnues.
- Forme exacte des sorties,
ansible-galaxy role init, option--stdin-name, comportement détaillé deno_log,ansible-lint. - Pare-feu et SELinux : modules et collections non consultés ; VMware : seulement cité.
Sources
Toutes consultées le 18 octobre 2026 (documentation « latest », sans version de page).
- Getting started with Ansible (s’ouvre dans un nouvel onglet)
- Installation guide (s’ouvre dans un nouvel onglet)
- Release and maintenance (s’ouvre dans un nouvel onglet) (
ansible14.x,ansible-core2.21, d'après résumé) - How to build your inventory (s’ouvre dans un nouvel onglet)
- Ansible playbooks (s’ouvre dans un nouvel onglet)
- Facts and magic variables (s’ouvre dans un nouvel onglet)
- Handlers (s’ouvre dans un nouvel onglet)
- Templating (Jinja2) (s’ouvre dans un nouvel onglet)
- ansible.builtin.template (s’ouvre dans un nouvel onglet)
- Check mode and diff mode (s’ouvre dans un nouvel onglet)
- Ansible Vault (s’ouvre dans un nouvel onglet)
- Encrypting content with Ansible Vault (s’ouvre dans un nouvel onglet)
- Roles (s’ouvre dans un nouvel onglet)
- Privilege escalation (become) (s’ouvre dans un nouvel onglet)
- ansible.builtin.dnf (s’ouvre dans un nouvel onglet)
- community.vmware (s’ouvre dans un nouvel onglet) (6.5.0)