Ansible est un outil d’automatisation Open Source très puissant, conçu pour simplifier la gestion et la configuration de flottes de serveurs. Grâce à sa syntaxe YAML et à son architecture sans agent, Ansible vous permet de déployer des configurations reproductibles, idempotentes et traçables en quelques lignes de code.
Prérequis
- Une machine de contrôle (Linux, macOS ou WSL)
- Accès SSH (clé publique) vers vos serveurs
- Python 3 installé sur la machine de contrôle
- Droits sudo sur les nœuds gérés
Installation d’Ansible
1. Mise à jour du système
sudo apt update && sudo apt upgrade -y
2. Installation via le dépôt officiel
sudo apt install software-properties-common
sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible -y
3. Vérification de la version
ansible --version
Vous devriez obtenir une sortie similaire à :
ansible 2.14.6
config file = /etc/ansible/ansible.cfg
python version = 3.10.12 (default, ... )
Configuration de l’inventaire
L’inventaire définit les hôtes et groupes de serveurs que vous allez gérer. Exemple de fichier hosts.ini
:
[web]
web1.example.com
web2.example.com
[db]
db1.example.com
[all:vars]
ansible_user=deploy
ansible_python_interpreter=/usr/bin/python3
Écriture d’un playbook
Un playbook Ansible regroupe des tâches à exécuter sur vos nœuds. Exemple : installation de Nginx sur le groupe web
.
---
- name: Déployer Nginx sur les serveurs web
hosts: web
become: yes
tasks:
- name: Installer le paquet Nginx
apt:
name: nginx
state: present
update_cache: yes
- name: Copier le fichier de configuration
template:
src: templates/nginx.conf.j2
dest: /etc/nginx/nginx.conf
mode: '0644'
- name: Redémarrer Nginx si la config a changé
service:
name: nginx
state: restarted
notify: Vérifier le service
handlers:
- name: Vérifier le service
command: systemctl status nginx
Exécution du playbook
ansible-playbook -i hosts.ini deploy-nginx.yml
-i hosts.ini
: chemin vers votre inventairedeploy-nginx.yml
: nom de votre playbook
Bonnes pratiques
- Structurer votre projet :
ansible/ ├── hosts.ini ├── group_vars/ │ └── all.yml ├── host_vars/ ├── roles/ │ └── nginx/ │ ├── tasks/ │ ├── templates/ │ └── defaults/ └── playbooks/ └── deploy-nginx.yml
- Utiliser les rôles pour réutiliser facilement des modules.
- Versionner votre répertoire Ansible avec Git.
- Tester vos playbooks en local (Vagrant, Docker…).
- Documenter chaque playbook et role pour vos équipes.
Avantages clés
- Idempotence : exécution répétable sans effets secondaires indésirables
- Sans agent : SSH suffit, pas de daemon supplémentaire
- Extensible : modules Python, plugins, collections
- Communauté active : milliers de rôles disponibles sur Ansible Galaxy
Limites
- Courbe d’apprentissage pour les gros projets
- Performance sur très grands inventaires (scalabilité limitée)
- Dépendance à SSH et Python sur les nœuds
Conclusion
Ansible vous offre un moyen rapide et fiable pour automatiser la configuration de vos serveurs, réduire les erreurs humaines et gagner en productivité. Que vous administriez quelques machines ou des milliers, sa simplicité et sa flexibilité en font un pilier de l’infrastructure as code.