Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Les outils de gestion de configuration

Par mis à jour le

Améliorer cette page

La gestion de configuration est la pratique qui définit, applique et maintient la configuration des systèmes (paquets, fichiers, utilisateurs, services) à partir d'une description écrite, au lieu de commandes tapées machine par machine. Cette page est le panorama de la famille : le problème qu'elle résout, un historique de CFEngine à Salt, les cinq outils principaux (Ansible, Puppet, Chef, Salt, Rudder), un tableau pour choisir, des cas d'usage et des bonnes pratiques. Elle s'adresse à qui connaît Linux, Git et la lecture du YAML. Les extraits sont à lire, pas à exécuter.

  • définir la gestion de configuration et le problème qu'elle résout ;
  • situer Ansible, Puppet, Chef, Salt et Rudder par leur architecture ;
  • choisir un outil selon la taille du parc et les compétences de l'équipe ;
  • appliquer quelques bonnes pratiques valables pour tous.

Quel problème la gestion de configuration résout-elle ?

Section intitulée « Quel problème la gestion de configuration résout-elle ? »

Avant ces outils, l'administration reposait sur des interventions manuelles : l'administrateur se connectait à chaque serveur pour exécuter des commandes, copier des fichiers, installer des paquets ou ajuster des paramètres. Cette méthode produit cinq défauts : l'erreur humaine (une faute de frappe crée des incohérences entre machines), le manque de reproductibilité, l'absence de traçabilité, le temps perdu à répéter les mêmes tâches, et la dérive silencieuse, c'est-à-dire l'écart qui s'installe peu à peu entre des serveurs censés être identiques.

Les scripts shell ont longtemps servi de palliatif, mais sans standard ni outillage robuste, ils restent artisanaux et fragiles. Les outils de gestion de configuration apportent l'automatisation, la traçabilité et la cohérence : on décrit l'état voulu des machines dans des fichiers versionnés, et l'outil l'applique. La notion de dérive est approfondie dans la leçon Idempotence, convergence et dérive.

Dans les années 1990, les premiers scripts maison apparaissent : des scripts shell qui installent des logiciels ou règlent la configuration de serveurs, spécifiques à chaque environnement et rarement documentés.

CFEngine, créé par Mark Burgess en 1993, est le pionnier des outils structurés. Il introduit l'idée de décrire la configuration par des règles déclaratives, mais sa complexité freine son adoption large. Suivent Puppet (2005) et Chef (2009), avec des langages dédiés et des écosystèmes actifs : Puppet séduit par son architecture serveur et agents, Chef par ses recettes en Ruby. Salt publie sa première version en 2011, et Ansible est lancé en 2012 : il se distingue en n'exigeant aucun agent, car il s'appuie sur SSH et sur une syntaxe YAML simple.

L'essor des conteneurs et du cloud pousse ensuite ces outils à gérer des environnements dynamiques et éphémères, pas seulement des serveurs physiques. Rudder propose une interface graphique et un contrôle de conformité. Aujourd'hui, ils font partie des pipelines DevOps et s'articulent avec Terraform ou des chaînes CI/CD.

Cinq outils dominent le paysage, avec chacun un modèle et des cas d'usage préférés.

Ansible repose sur une architecture sans agent : un contrôleur se connecte aux machines par SSH pour exécuter des tâches. Son format YAML le rend accessible aux débutants, et il est apprécié pour sa mise en place rapide, sa communauté et son intégration aux pipelines CI/CD. Chaque tâche appelle un module qui décrit un état voulu, comme ici l'installation d'un paquet :

- hosts: webservers
tasks:
- name: Installer Apache
ansible.builtin.apt:
name: apache2
state: present

Le nom complet du module, ansible.builtin.apt, est son FQCN (nom qualifié complet : l'espace de noms, la collection, puis le module). Il évite toute ambiguïté si une autre collection fournit un module du même nom.

Puppet utilise un modèle déclaratif et une architecture serveur et agents : un agent installé sur chaque machine interroge le serveur, applique l'état voulu et rapporte son résultat. Il convient aux environnements complexes où la scalabilité et le reporting détaillé comptent.

Chef décrit la configuration par des « recettes » écrites en Ruby. Il offre une grande flexibilité mais demande des compétences de développement : il convient aux équipes à l'aise avec la programmation, pour des configurations avancées.

Salt (anciennement SaltStack) se distingue par sa vitesse d'exécution et son orchestration quasi temps réel. Son architecture associe un serveur (le « master ») et des agents (les « minions ») reliés par un bus de messages, mais il sait aussi fonctionner sans agent avec Salt SSH. Il est prisé pour piloter de grands volumes de serveurs. La série 3008 est la version à support long terme en 2026. La formation Salt le prend de zéro, du premier ping à l'orchestration multi-nœuds.

Rudder combine gestion de configuration et contrôle de conformité. Son interface web facilite le suivi des règles appliquées, avec des rapports détaillés : il s'adresse aux organisations soumises à des normes strictes qui veulent une solution prête à l'emploi.

Les cinq outils partagent l'approche Infra-as-Code (les configurations sont du code versionnable), l'automatisation, la traçabilité par Git et une communauté qui partage modules et bonnes pratiques. Le tableau ci-dessous donne les différences utiles pour un premier tri ; la colonne « Architecture » indique le mode par défaut de chaque outil, et la leçon Push, pull ou agent explique ce que ces modes changent (Ansible peut aussi tirer sa configuration avec ansible-pull, Puppet et Chef disposent de modes sans serveur).

OutilLangage ou syntaxeArchitecturePoints forts
AnsibleYAMLSans agent (SSH)Facile à apprendre, rapide à déployer
PuppetDSL PuppetServeur et agentsScalabilité, reporting puissant
ChefRuby (recettes)Serveur et agentsFlexibilité, personnalisation fine
SaltYAML et JinjaServeur et agents, ou sans agentExécution rapide, orchestration temps réel
RudderÉditeur visuel (interface web) ou YAMLServeur et agentsInterface conviviale, conformité

Le choix dépend de la taille du parc, des compétences de l'équipe et du contexte. Pour un débutant ou un petit projet, Ansible, grâce à sa simplicité et à l'absence d'agent. Pour un grand parc à maintenir aligné avec un reporting détaillé, Puppet. Pour une équipe orientée développement, Chef. Pour piloter rapidement des milliers de serveurs, Salt. Pour une organisation soumise à des normes strictes, Rudder. Si vous pratiquez déjà Ansible et vous demandez s'il faut en changer, la page Alternatives à Ansible compare ces outils sur des critères concrets, et dit aussi quand il vaut mieux rester sur Ansible.

Cinq familles de cas d'usage reviennent. L'automatisation des déploiements installe des applications et leurs dépendances, ouvre les ports et configure les services sur plusieurs serveurs. La gestion des correctifs applique les mises à jour de sécurité sans intervention manuelle et réduit le délai entre la publication d'un patch et son déploiement. L'application des politiques de sécurité configure les pare-feu, désactive les services inutiles et renouvelle les certificats.

La supervision de la conformité génère des rapports sur l'état des systèmes et identifie les dérives de configuration (drift), ce qui facilite les audits. Enfin, la scalabilité cloud gère des machines virtuelles et instances AWS, Azure ou GCP, et adapte les configurations à des environnements dynamiques.

Six pratiques valent pour tous les outils. Versionner les configurations dans Git donne l'historique et permet les retours arrière. Tester avant déploiement : valider les playbooks Ansible, manifests Puppet ou recettes Chef dans un environnement de test, avec des vérifications automatiques (lint, tests unitaires) dans le pipeline CI/CD. Documenter chaque changement pour que la configuration reste compréhensible par toute l'équipe, pas seulement par son auteur.

Il faut aussi surveiller les dérives par des audits réguliers et des alertes ou corrections automatiques, éviter les interventions manuelles en production en centralisant toutes les configurations dans l'outil, et former les équipes pour que chacun comprenne le fonctionnement des outils.

  • La gestion de configuration décrit l'état voulu des systèmes dans des fichiers versionnés, et un outil l'applique : elle remplace l'intervention manuelle machine par machine.
  • CFEngine (1993) est le pionnier ; Puppet (2005), Chef (2009), Salt (2011, série 3008 à support long terme) et Ansible (2012) suivent.
  • Ansible est sans agent (SSH) ; Puppet, Chef et Rudder fonctionnent en serveur et agents ; Salt fait les deux.
  • Le choix dépend de la taille du parc, des compétences de l'équipe et des besoins de conformité ou de vitesse.
  • Les bonnes pratiques sont communes : versionner, tester, documenter, surveiller les dérives, éviter les interventions manuelles.

Vérifiez que l'essentiel de ce guide est acquis. Les questions portent uniquement sur ce qui vient d'être expliqué ici.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn