Qu'est-ce qu'Ansible ?
Ansible est un outil open-source d'automatisation IT créé par Red Hat. Il permet d'automatiser la configuration des serveurs, le déploiement d'applications, l'orchestration de workflows et la gestion d'infrastructure. Sa particularite principale est d'être agentless : il ne nécessite aucun logiciel installe sur les machines cibles, utilisant uniquement SSH (Linux) ou WinRM (Windows) pour se connecter.
Concepts fondamentaux
L'inventaire définit les machines cibles, organisées en groupes (webservers, databases, production). Les playbooks sont des fichiers YAML décrivant les tâches à exécuter de manière déclarative. Les rôles organisent les playbooks en composants réutilisables (rôle nginx, rôle postgresql). Les modules sont les unités d'action (apt pour les packages, copy pour les fichiers, template pour Jinja2, service pour les daemons). Les facts sont des informations collectees automatiquement sur les machines cibles (OS, IP, mémoire).
Playbooks et idempotence
Les playbooks Ansible sont idempotents : les exécuter plusieurs fois produit le même résultat. Si un package est déjà installe, Ansible ne fait rien. Si un fichier de configuration est déjà correct, il n'est pas modifie. Cette propriété rend Ansible sur à exécuter en production à tout moment. Les handlers declenchent des actions après un changement (redemarrer nginx après modification de la configuration).
Ansible vs Terraform
Ansible et Terraform sont complémentaires. Terraform gere l'infrastructure (créer des VM, des réseaux, des bases de données) de manière déclarative avec un state file. Ansible configure les serveurs une fois crees (installer des packages, déployer des applications, configurer des services). Terraform pour le "quoi" déployer, Ansible pour le "comment" configurer. Certaines équipes utilisent Ansible pour les deux, mais Terraform excelle dans le provisioning d'infrastructure cloud.
Ansible Galaxy et écosystème
Ansible Galaxy est le dépôt communautaire de rôles réutilisables. Plutôt que d'écrire un rôle nginx ou Docker from scratch, on utilise des rôles communautaires testes et maintenus. Ansible Collections regroupent des modules, rôles et plugins pour un domaine spécifique. AWX (version open-source) et Ansible Automation Platform (Red Hat, payant) ajoutent une interface web, la gestion des credentials, le scheduling et l'audit. Ansible Vault chiffre les secrets (mots de passe, clés) dans les playbooks.