Automatiser la configuration de vos serveurs avec Ansible

Publié le 6 juillet 2025

Automatisation
Infrastructures

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 inventaire
  • deploy-nginx.yml : nom de votre playbook

Bonnes pratiques

  1. Structurer votre projet :
    ansible/
    ├── hosts.ini
    ├── group_vars/
    │   └── all.yml
    ├── host_vars/
    ├── roles/
    │   └── nginx/
    │       ├── tasks/
    │       ├── templates/
    │       └── defaults/
    └── playbooks/
        └── deploy-nginx.yml
    
  2. Utiliser les rôles pour réutiliser facilement des modules.
  3. Versionner votre répertoire Ansible avec Git.
  4. Tester vos playbooks en local (Vagrant, Docker…).
  5. 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.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets.

Contactez-nous

Articles similaires qui pourraient vous intéresser