Ansible — installation, configuration de l'inventaire, mise en place SSH et création de playbooks pour automatiser la gestion d'un parc de machines.
Mettez d'abord à jour votre système, puis installez Ansible depuis les dépôts Debian :
sudo apt update
sudo apt upgrade -y
sudo apt install ansible -y
Vérifier la version installée :
ansible --version
Alternative — installer une version plus récente via pip :
sudo apt install python3-pip -y
pip3 install --user ansible
L'inventaire Ansible liste toutes les machines que vous souhaitez administrer. Le fichier principal se trouve ici :
/etc/ansible/hosts
Exemple d'inventaire avec deux groupes de machines :
# Groupe de serveurs génériques
[serveurs]
192.168.1.20
192.168.1.21
# Groupe des serveurs web avec alias
[web]
web1 ansible_host=192.168.1.30
web2 ansible_host=192.168.1.31
# Variables spécifiques au groupe
[web:vars]
ansible_user=admin
ansible_python_interpreter=/usr/bin/python3
/etc/ansible/hosts.
Appelez-le simplement inventory et référencez-le avec -i inventory.
Ansible communique avec les machines gérées via SSH. L'authentification par clé est fortement recommandée pour éviter de saisir un mot de passe à chaque exécution.
Générer une paire de clés SSH sur la machine de contrôle :
# Génère une clé ed25519 sécurisée
ssh-keygen -t ed25519 -C "ansible-control"
Déployer la clé publique sur chaque machine cible :
ssh-copy-id user@192.168.1.20
ssh-copy-id user@192.168.1.21
Tester la connexion SSH avant de lancer Ansible :
ssh user@192.168.1.20
Testez la connectivité Ansible vers toutes vos machines avec le module ping :
# Ping sur toutes les machines de l'inventaire
ansible all -m ping -u user
# Ping uniquement sur un groupe
ansible serveurs -m ping -u user
Réponse attendue pour chaque machine :
192.168.1.20 | SUCCESS => {
"changed": false,
"ping": "pong"
}
Exécuter une commande ad-hoc sur toutes les machines :
# Vérifier l'espace disque sur tous les serveurs
ansible all -m shell -a "df -h" -u user
# Récupérer l'uptime de chaque machine
ansible all -m shell -a "uptime" -u user
Un playbook Ansible est un fichier YAML qui décrit une série de tâches à exécuter sur un groupe de machines. Créez votre fichier dans votre répertoire de travail :
ansible/playbooks/install_apache.yml
Exemple de playbook pour installer Apache sur le groupe serveurs :
---
- name: Installer Apache sur les serveurs
hosts: serveurs
become: yes # Exécuter avec sudo
tasks:
# Tâche 1 : mettre à jour le cache apt
- name: Mettre à jour le cache des paquets
apt:
update_cache: yes
# Tâche 2 : installer apache2
- name: Installer apache2
apt:
name: apache2
state: present
# Tâche 3 : démarrer et activer le service
- name: Démarrer et activer Apache au démarrage
service:
name: apache2
state: started
enabled: yes
Exécuter le playbook :
# Exécution standard
ansible-playbook install_apache.yml -u user
# Mode simulation (dry-run) — ne modifie rien
ansible-playbook install_apache.yml -u user --check
# Mode verbose — affiche le détail de chaque tâche
ansible-playbook install_apache.yml -u user -v
roles/ pour réutiliser et partager des configurations entre playbooks.
group_vars/[groupe].yml et par machine dans host_vars/[ip].yml
plutôt que dans les playbooks.
--check
avant d'appliquer un playbook en production pour simuler les changements sans les effectuer.
ansible-vault pour chiffrer les données sensibles (mots de passe, clés API)
dans vos fichiers de variables.