L'automatisation consiste à remplacer les tâches manuelles répétitives par des scripts ou des outils dédiés. Pour un administrateur système, cela signifie exécuter des configurations, déploiements ou vérifications sans intervention humaine directe.
| Aspect | Sans automatisation | Avec automatisation |
|---|---|---|
| Temps d'exécution | Heures/Jours | Minutes |
| Erreurs humaines | Fréquentes | Minimales |
| Reproductibilité | Variable | 100% identique |
| Documentation implicite | Absente | Dans le code |
| Scalabilité | Limitée | Illimitée |
Ansible est un outil d'automatisation open-source (maintenu par Red Hat depuis son rachat en 2015) écrit principalement en Python. Il permet de gérer l'infrastructure informatique comme du code (Infrastructure as Code).
Contrairement à d'autres solutions comme Puppet ou Chef, Ansible ne nécessite pas d'agent installé sur les machines cibles
Avantages de l'approche agentless :
| Composant | Description | Emplacement |
|---|---|---|
| Control Node | Machine où Ansible est installé et où les commandes sont lancées | Votre poste de travail ou serveur dédié |
| Managed Nodes | Serveurs cibles gérés par Ansible | Infrastructure distante |
| Inventory | Fichier listant les hôtes et groupes | /etc/ansible/hosts ou fichier projet |
| Modules | Programmes exécutés sur les nœuds gérés | Transférés via SSH au moment de l'exécution |
| Playbook | Script YAML contenant des tâches séquençables | Fichier .yml dans votre projet |
| Plugins | Extensions d'Ansible pour étendre ses fonctionnalités | ~/.ansible/plugins/ ou collections |
L'idempotence est la capacité d'une opération à être exécutée plusieurs fois sans changer le résultat si la configuration cible est déjà atteinte.
Exemple :
Première exécution
$ ansible webservers -m apt -a "name=nginx state=present"
webservers-01 | CHANGED -> Installe nginx
Deuxième exécution (nginx déjà installé)
$ ansible webservers -m apt -a "name=nginx state=present"
webservers-01 | OK -> Rien à faire, déjà présent
Les facts sont des informations collectées automatiquement sur les nœuds gérés via le module setup. Ils incluent :
Un role est une structure de répertoires prédéfinie permettant de réutiliser et organiser les tâches, variables, templates et fichiers dans une arborescence standardisée.
Un handler est une tâche spéciale qui ne s'exécute que lorsqu'elle est notifiée (généralement après une modification). Exemple typique : redémarrer un service uniquement si sa configuration a changé.