Guide technique — Automatisation & déploiement

Administration avec
Ansible

Ansible — installation, configuration de l'inventaire, mise en place SSH et création de playbooks pour automatiser la gestion d'un parc de machines.

Auteur
EHAVOX
Mise à jour
2026
Système
Debian / Ubuntu
Sommaire
01

Installation d'Ansible

Mettez d'abord à jour votre système, puis installez Ansible depuis les dépôts Debian :

bash
sudo apt update
sudo apt upgrade -y
sudo apt install ansible -y

Vérifier la version installée :

bash
ansible --version

Alternative — installer une version plus récente via pip :

bash
sudo apt install python3-pip -y
pip3 install --user ansible
Info
Ansible s'installe uniquement sur la machine de contrôle (votre poste ou serveur d'administration). Les machines gérées n'ont besoin que d'un serveur SSH et de Python — aucun agent à installer.
02

Configuration de l'inventaire

L'inventaire Ansible liste toutes les machines que vous souhaitez administrer. Le fichier principal se trouve ici :

path
/etc/ansible/hosts

Exemple d'inventaire avec deux groupes de machines :

inventory
# 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
Astuce
Pour les environnements plus complexes, préférez créer un fichier d'inventaire local à votre projet plutôt que de modifier /etc/ansible/hosts. Appelez-le simplement inventory et référencez-le avec -i inventory.
03

Configuration SSH

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 :

bash
# 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 :

bash
ssh-copy-id user@192.168.1.20
ssh-copy-id user@192.168.1.21

Tester la connexion SSH avant de lancer Ansible :

bash
ssh user@192.168.1.20
Info
Consultez le guide SSH pour la configuration complète de l'authentification par clé et les bonnes pratiques de sécurisation.
04

Premier test Ansible

Testez la connectivité Ansible vers toutes vos machines avec le module ping :

bash
# 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 :

output
192.168.1.20 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

Exécuter une commande ad-hoc sur toutes les machines :

bash
# 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
05

Exemple de playbook

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 :

path
ansible/playbooks/install_apache.yml

Exemple de playbook pour installer Apache sur le groupe serveurs :

yaml
---
- 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 :

bash
# 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
06

Bonnes pratiques

  • Utiliser des groupes dans l'inventaire — organisez vos machines par rôle (web, bdd, supervision…) pour cibler précisément les tâches par groupe.
  • Mettre en place des rôles — structurez votre projet avec le répertoire roles/ pour réutiliser et partager des configurations entre playbooks.
  • Utiliser group_vars et host_vars — stockez les variables par groupe dans group_vars/[groupe].yml et par machine dans host_vars/[ip].yml plutôt que dans les playbooks.
  • Tester avec --check — exécutez systématiquement --check avant d'appliquer un playbook en production pour simuler les changements sans les effectuer.
  • Versionner avec Git — tous vos playbooks, inventaires et variables doivent être versionnés dans un dépôt Git pour pouvoir tracer les modifications et revenir en arrière.
  • Ne jamais stocker de mots de passe en clair — utilisez ansible-vault pour chiffrer les données sensibles (mots de passe, clés API) dans vos fichiers de variables.
Astuce
Combinez Ansible avec Crontab pour automatiser l'exécution périodique de playbooks de maintenance — mise à jour des paquets, vérification de l'état des services, rotation des logs, etc.