Objectifs
- Lire la structure d’une commande ansible ad-hoc.
- Utiliser ping, command, shell, package, service, copy, file et setup.
- Limiter précisément les hôtes visés.
- Préférer un module dédié à shell lorsque cela est possible.
Commandes ad-hoc
Une commande ad-hoc exécute un module sans écrire de playbook. Elle convient à une vérification ou une opération ponctuelle ; dès qu’une action doit être répétée, relue ou partagée, un playbook devient plus sûr.
La forme générale est ansible <motif> -i <inventory> -m <module> -a <arguments>. Vérifiez le motif d’hôtes, le besoin de become et l’impact réel avant toute exécution.
Connectivité et collecte d’informations
ping vérifie la capacité d’Ansible à travailler avec la cible. setup collecte les facts. command lance directement un programme sans interprétation par un shell.
ansible web -i inventory.ini -m ansible.builtin.pingansible web -i inventory.ini -m ansible.builtin.command -a "uname -r"ansible web -i inventory.ini -m ansible.builtin.setupPaquets, services et fichiers
Les modules dédiés décrivent un état souhaité et sont généralement plus prévisibles que des commandes shell. --become demande une élévation de privilèges : elle doit être autorisée et limitée.
ansible web -i inventory.ini -m ansible.builtin.package -a "name=nginx state=present" --becomeansible web -i inventory.ini -m ansible.builtin.service -a "name=nginx state=started enabled=true" --becomeansible web -i inventory.ini -m ansible.builtin.copy -a "src=./motd dest=/tmp/motd mode=0644"ansible web -i inventory.ini -m ansible.builtin.file -a "path=/tmp/demo-ansible state=directory mode=0755"command ou shell ?
ansible.builtin.shell passe la commande par un shell et permet pipes, redirections ou variables du shell. Cette puissance augmente aussi les risques d’erreur, d’injection et de non-idempotence.
- Préférez package, service, copy, file ou un autre module dédié.
- Utilisez command si aucune fonctionnalité de shell n’est nécessaire.
- N’utilisez shell qu’après validation des entrées et de l’idempotence.
- Ajoutez --limit pour tester sur un hôte connu avant un groupe entier.
ansible web -i inventory.ini -m ansible.builtin.shell -a "journalctl -n 100 | grep ERROR"Erreur fréquente : utiliser shell pour tout
Mini résumé
- Les commandes ad-hoc servent aux actions ponctuelles et ciblées.
- ping, setup, package, service, copy et file couvrent de nombreux besoins courants.
- command évite le shell ; shell se réserve aux fonctions qui l’exigent réellement.
- Le groupe, --limit et --become se relisent avant exécution.
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’outilMini quiz
Trois questions pour vérifier les notions essentielles de la leçon.