Aller au contenu
Contactez-nous
  1. Accueil
  2. /
  3. Blog
  4. /
  5. Gestion de configuration en 2026 : Ansible, Puppet, Chef ou Salt ?

DevOps
Infrastructure

Gestion de configuration en 2026 : Ansible, Puppet, Chef ou Salt ?

20 février 2026

12 min de lecture

Sommaire
Plan de l'article
Le problème du configuration drift
Ansible : l'agentless pragmatique
Puppet : le déclaratif enterprise
Chef : l'approche code
Salt : le rapide et polyvalent
Comparatif détaillé
Ansible en pratique
Intégration CI/CD et détection de drift
Tendances 2026 et évolutions
Perspectives complémentaires
Sources et ressources
Conclusion

Gestion de configuration en 2026 : Ansible, Puppet, Chef ou Salt ?

La gestion de configuration reste un pilier de l'infrastructure moderne. En 2026, malgré l'émergence des conteneurs et de l'infrastructure immuable, les outils de configuration restent nécessaires pour les environnements existants, les systèmes critiques et les déploiements hybrides.

Mais quelle approche choisir ? Ansible, Puppet, Chef ou Salt ? Chacun porte une philosophie différente, une courbe d'apprentissage distincte, des forces propres. Ce comparatif vous aide à trancher dans un domaine fragmenté, selon votre contexte.


Plan de l'article

  1. Le problème du configuration drift, Pourquoi cela demeure critique en 2026
  2. Ansible : l'agentless pragmatique, Architecture, force et pièges
  3. Puppet : le déclaratif enterprise, Rigueur et courbe d'apprentissage
  4. Chef : l'approche code, Ruby, flexibilité et complexité
  5. Salt : le rapide et polyvalent, Puissance brute et performance
  6. Comparatif détaillé, Table synthétique et pondération
  7. Ansible en pratique, Inventory, playbooks, roles et vault
  8. Intégration CI/CD, GitOps for config et détection de drift automatisée
  9. Tendances 2026, Policy-as-Code, immutable infrastructure et Kubernetes
  10. Perspectives complémentaires, Articles liés et compléments
  11. Sources et ressources
  12. Conclusion, Choosing pragmatically

Le problème du configuration drift

Qu'est-ce que le configuration drift ?

Un snowflake server est un serveur modifié manuellement, session par session, patch par patch. Zéro documentation, zéro reproductibilité. Quand il tombe en panne, on l'appelle l'administrateur qui s'en occupait, qui est parfois absent.

Le configuration drift c'est quand l'état réel de votre infrastructure diverge de votre définition attendue :

État attendu : Apache 2.4.52 + SSL TLS 1.3
État réel : Apache 2.4.47 + SSL TLS 1.2 (patch manuel non documenté)

En 2026, ceci reste un cauchemar :

  • Compliance et audit : Vous ne pouvez pas prouver l'état de vos systèmes
  • Incident response : Chaque serveur est une énigme
  • Scalabilité : Ajouter 50 serveurs manuellement = 50 configurations différentes
  • Sécurité : Des vulnérabilités imprévues car vous ne savez pas ce qui s'exécute réellement

Les outils de gestion de configuration résolvent ce problème en déclarant "voici l'état idéal, maintiens-le". La mécanique varie (agentless vs agent, push vs pull, impératif vs déclaratif), mais l'objectif reste le même.


Ansible : l'agentless pragmatique

Architecture

Ansible est agentless : pas de daemon permanent sur les nœuds. Chaque exécution SSH ouvre une connexion, pousse un playbook, l'exécute via Python, et ferme la connexion.

Flux simplifié :

  1. Contrôleur Ansible → SSH sur inventory_host
  2. Python bootstrap et exécution des tâches
  3. Résultat retourné en JSON
  4. Fermeture SSH
Force principales
  • Zéro friction d'adoption : YAML + SSH = pas de préalable alien
  • Bas overhead : Pas d'agent à gérer, pas de daemon, pas de base de données centralisée obligatoire
  • Idempotence garantie : Chaque module est écrit pour l'être
  • Python standardisé : Présent sur 99 % des systèmes Unix/Linux
  • Utilisé par des scale-ups et des grands groupes (Red Hat supporte Ansible, community massif)
Points faibles
  • Perte de performance à scale massive : 200+ nœuds simultanés → séquençage et attentes
  • Langage YAML limité : Pas de vraie programmation, jinja2 templates ≠ Ruby/DSL
  • Gestion des secrets basique : Vault fonctionne mais interface moins intégrée qu'avec Puppet
  • Peu de rigueur d'architecture : Facile de créer du spaghetti playbook
  • Convergence moins intelligente : Redémarrage au lieu d'orchestration fine
Meilleur pour
  • Environnements sans expertise DevOps antérieure
  • Migration rapide depuis configuration manuelle
  • Automatisation légère et ponctuelle (déploiement, patch)
  • Équipes IT classiques (sysadmins) plutôt que dev

Puppet : le déclaratif enterprise

Architecture

Puppet utilise un agent-pull model : chaque nœud exécute un agent daemon qui interroge un serveur Puppet central (puppet-server) à intervalles réguliers.

Flux :

  1. Agent Puppet s'exécute localement (par cron ou daemon continu)
  2. Agent requête le puppet-server : "Donne-moi mon catalogue"
  3. Puppet-server compile le code Puppet → catalogue JSON
  4. Agent applique le catalogue localement
  5. Résultat envoyé au server (optionnel, pour rapports)
Force principales
  • Déclaratif pur : Code Puppet décrit l'état, pas les étapes
  • Enterprise-ready : RBAC, rapports, audit trail, compliance reporting
  • Langage turing-complet : Variables, boucles, conditionnels
  • Gestion des secrets éprouvée : Puppet Vault, Hiera avec backend chiffré
  • Écosystème large : Puppet Forge a des milliers de modules officiels
  • Scalabilité éprouvée : Netflix, Booking, Twitter tournent sur Puppet depuis 10+ ans
Points faibles
  • Courbe d'apprentissage raide : Puppet DSL est un langage propriétaire
  • Overhead agent : Chaque nœud exécute un Ruby daemon
  • Debugging difficile : Erreurs Puppet DSL cryptiques
  • Coût commercial : Version open-source (Puppet Community) vs Puppet Enterprise (payant)
  • Syntaxe indigeste : Package { 'apache2': ensure => present } vs Ansible name: apache2 state: present
Meilleur pour
  • Grandes organisations avec équipes DevOps dédiées
  • Infrastructure très hétérogène (centaines de serveurs, configs variées)
  • Conformité réglementaire stricte (finance, santé)
  • Besoin de rapports centralisés et audit trail
  • Serveurs long-lived (cattle vs pets)

Chef : l'approche code

Architecture

Chef utilise lui aussi un pull model (Chef Client daemon), mais l'approche diffère du tout au tout : tout passe par du Ruby code. Un "cookbook" Chef est un artefact versionné contenant des "recipes".

Flux :

  1. Chef Client s'exécute localement
  2. Client se connecte à Chef Server
  3. Chef Server envoie les recipes et data bags
  4. Client exécute les recipes (Ruby) en séquence
  5. Résultat envoyé à Chef Server
Force principales
  • Flexibilité totale : C'est du Ruby, on peut tout faire
  • Infrastructure-as-Code vrai : Code versionné, testable, reviewable
  • Intégration DevOps naturelle : Philosophie "code first"
  • InSpec intégré : Testing et compliance-as-code dans la même plateforme
  • Communauté développeurs : Des ressources pour les infra-as-code hardcore
Points faibles
  • Courbe d'apprentissage haute : Ruby + concepts Chef (attributes, notifications, guards)
  • Surengineering facile : Trop de puissance mène à du code compliqué et peu maintenable
  • Performance : Ruby est plus lent que Python (Ansible) ou Go (Salt)
  • Coût : Chef Enterprise est payant, support limité en Community
  • Moins de modules officiels : Community moins grande qu'Ansible ou Puppet
Meilleur pour
  • Organisations avec forte culture DevOps et développeurs infrastructure
  • Besoin de logique conditionnelle complexe
  • Compliance-as-Code (InSpec)
  • Déploiements application-centric (base de Chef)

Salt : le rapide et polyvalent

Architecture

Salt est un push model (par défaut) mais offre aussi un pull model optionnel. Salt utilise ZeroMQ (réseau asynchrone haute performance) et un minion daemon léger sur chaque nœud.

Flux (push) :

  1. Master Salt requête les minions via ZeroMQ
  2. Minions exécutent les états (states) ou commandes
  3. Résultat retourné en temps quasi-réel
  4. Master orchestre ensuite (optional)
Force principales
  • Exécution ultra-rapide : ZeroMQ vs SSH = temps de réponse millisecondes
  • Polyvalent : Parfait pour remote execution, pas juste CM
  • Scalabilité éprouvée : Peut gérer 10 000+ minions
  • YAML + Jinja2 : Syntax proche d'Ansible, apprentissage facile
  • Event-driven : Peut réagir à des événements (watch, beacon)
  • Orchestration intégrée : Runners permettent multi-step, orchestration complexe
Points faibles
  • Minion daemon à gérer : Overhead vs agentless
  • Syntaxe moins lisible : States/Pillars concept moins évident
  • Documentation fragmentée : Grande surface d'API, moins de tutoriels
  • Communauté plus petite : Moins de modules community
  • Ecosystem professionnel moins mature : Salt Enterprise existe mais moins adopté que Puppet Enterprise
Meilleur pour
  • Environnements où performance est critique (1000+ nœuds)
  • Organisations avec besoin de remote execution ad-hoc + configuration
  • Event-driven infrastructure
  • Équipes ayant déjà de l'expérience avec Ansible et voulant la performance

Comparatif détaillé

CritèreAnsiblePuppetChefSalt
ArchitectureAgentless (SSH)Pull (agent daemon)Pull (agent daemon)Push (ZeroMQ minion)
LangageYAML + Jinja2Puppet DSLRubyYAML + Jinja2
Courbe apprentissageTrès faibleHauteMoyenne-hauteMoyenne
ScalabilitéBonne (< 1000)ExcellenteBonneExcellente
Performance (latence)Moyenne (SSH overhead)Bonne (local)Bonne (local)Excellente (ZeroMQ)
Écosystème modulesGigantesqueTrès largeLargeMoyen
DebuggingFacileDifficileMoyenMoyen
Enterprise supportRed Hat AnsiblePuppet EnterpriseChef EnterpriseSalt Enterprise (limité)
Coût TCOTrès basMoyen-hautMoyen-hautBas
Meilleur pourPME, migration rapide, ops simpleEnterprise, compliance, scaleInfra-as-Code, compliancePerformance, event-driven

Ansible en pratique

1. Inventory
# inventory.yml
all:
  children:
    webservers:
      hosts:
        web1.example.com:
          ansible_user: ubuntu
          environment: production
        web2.example.com:
          ansible_user: ubuntu
          environment: production
    databases:
      hosts:
        db1.example.com:
          ansible_user: ubuntu
2. Playbook simple
# playbooks/deploy-apache.yml
---
- name: Deploy and configure Apache
  hosts: webservers
  become: yes
  tasks:
    - name: Update package cache
      apt:
        update_cache: yes
      when: ansible_os_family == "Debian"

    - name: Install Apache2
      package:
        name: apache2
        state: present

    - name: Copy config from template
      template:
        src: apache-vhost.j2
        dest: /etc/apache2/sites-available/default-ssl.conf
        backup: yes
      notify: restart apache

    - name: Enable SSL module
      community.general.apache2_module:
        name: ssl
        state: present
      notify: restart apache

  handlers:
    - name: restart apache
      service:
        name: apache2
        state: restarted
3. Roles et structure
roles/
  webserver/
    tasks/
      main.yml          # Tâches principales
    handlers/
      main.yml          # Handlers (notifications)
    templates/
      vhost.j2          # Templates Jinja2
    files/
      ssl-cert.pem      # Fichiers statiques
    vars/
      main.yml          # Variables
    defaults/
      main.yml          # Variables par défaut
4. Idempotence et Vault
# Vault pour les secrets
$ ansible-vault create group_vars/webservers/vault.yml
# Chiffré avec passphrase

# Dans le playbook
- name: Configure database credentials
  copy:
    content: |
      DB_HOST={{ db_host }}
      DB_USER={{ vault_db_user }}
      DB_PASS={{ vault_db_password }}
    dest: /app/.env
    mode: '0600'

L'idempotence = exécuter le playbook 100 fois = même résultat qu'une seule exécution. Chaque module Ansible (apt, copy, template, service) est conçu pour cela.


Intégration CI/CD et détection de drift

GitOps for configuration
# .github/workflows/config-deploy.yml
name: Config deploy

on:
  push:
    branches: [main]
    paths: ['playbooks/**', 'inventory/**']

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: ansible/ansible-lint-action@master
        with:
          targets: playbooks/

  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: |
          pip install ansible ansible-core molecule
          molecule test  # Test les roles Ansible

  deploy:
    needs: [lint, test]
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - uses: actions/checkout@v4
      - run: |
          ansible-playbook -i inventory.yml playbooks/deploy.yml
Détection de drift automatisée
#!/bin/bash
# check-drift.sh

REPORT_FILE="/tmp/drift-report-$(date +%Y%m%d).txt"

ansible all -i inventory.yml \
  --check \
  --diff > "$REPORT_FILE" 2>&1

if grep -q "changed" "$REPORT_FILE"; then
  echo "Configuration drift detected!"
  cat "$REPORT_FILE"
  exit 1
fi

echo "No drift detected. All systems in expected state."

Exécuté quotidiennement en cronjob, cela vous alerte si un serveur diverge.


Tendances 2026 et évolutions

Policy-as-Code avec OPA/Rego
# policies/enforce-tls.rego
package config.enforcement

deny[msg] {
    input.service.tls_version < "1.3"
    msg := sprintf("TLS version %s below minimum 1.3", [input.service.tls_version])
}

deny[msg] {
    input.service.certificate_validity < 90
    msg := sprintf("Certificate expires in %d days, below minimum 90", [input.service.certificate_validity])
}

Policy-as-Code apparaît comme couche au-dessus de la CM : avant d'appliquer une config, on la valide contre des politiques centrales.

Infrastructure immuable réduisant le besoin de CM

Conteneurs et immutable deployments (Kubernetes, Nomad) réduisent le besoin de CM continue. Au lieu de modifier, on redéploie l'image.

# Au lieu de CM, on bake l'image
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y apache2 openssl
COPY ./ssl-cert.pem /etc/ssl/certs/
COPY ./vhost.conf /etc/apache2/sites-available/

Mais : Infrastructure hybride (VM + conteneurs), serverless + on-prem = CM toujours critique.

Kubernetes ConfigMaps et Secrets

Sur Kubernetes, CM = ConfigMaps + Secrets, pas Ansible/Puppet. Mais sur les nœuds workers, la CM traditionnelle s'applique encore (OS-level, network, storage).


Perspectives complémentaires

Pour approfondir les sujets abordés :

  • Automatiser sa configuration avec Ansible, Deep dive sur Ansible dans un contexte entreprise
  • Ansible Galaxy et ses 10 000 roles, Réutiliser la communauté
  • Infrastructure-as-Code avec Terraform, Terraform vs CM, différences et complémentarité
  • Terraform + Ansible : orchestration complète, Combiner provisioning et configuration
  • AWX : orchestration Ansible en web UI, Ansible Tower gratuit (AWX) pour les équipes

Sources et ressources

  • Ansible Documentation Officielle (2026), https://docs.ansible.com
  • Puppet Labs (Best Practices) https://puppet.com/docs
  • Chef Documentation, https://docs.chef.io
  • Salt Project (State System) https://docs.saltproject.io/en/latest/ref/states/
  • Linux Academy / A Cloud Guru, Configuration Management Courses
  • SANS/NIST, Secure Configuration Management Guidelines
  • "Infrastructure as Code" - Kief Morris (O'Reilly), Reference architecture comparisons
  • RedHat & Ansible Community Blogs, Latest trends in automation

Conclusion

En 2026, Ansible reste le choix pragmatique par défaut pour 80 % des organisations : faible friction, courbe d'apprentissage douce, écosystème massif.

Puppet prend l'avantage à grande échelle, sur la compliance stricte, avec des équipes DevOps rodées. Chef excelle dans la philosophie code-first pour de l'infra as code hardcore. Salt prend le dessus quand la performance ultrarapide et l'orchestration event-driven comptent.

Votre choix dépend de vos réponses à :

  1. Quelle est votre échelle : 10 serveurs ou 1000+ ?
  2. Avez-vous une équipe DevOps ou des sysadmins classiques ?
  3. Conformité critique ou infrastructure simple ?
  4. Budget pour outils commerciaux ?

Testez sur 3-5 serveurs de test, mesurez temps de déploiement et satisfaction équipe. Le meilleur outil est celui que votre équipe maîtrisera et maintiendra.


Vous avez des questions sur Ansible ou la gestion de configuration en production ? Rendez-vous avec nos experts infogérance.

Besoin d'aide sur ce sujet ?

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

Contactez-nous

Articles similaires

Packer + Ansible : pipeline d'images golden modernes
DevOps
Infrastructure
Conteneurs

Packer + Ansible : pipeline d'images golden modernes

Construire des images VM et conteneurs immuables avec HashiCorp Packer et Ansible. Multi-cloud, multi-format, signature, intégration CI/CD, retours ops.

29 mai 2026

Lire plus

OpenTofu : migrer depuis Terraform sans douleur
DevOps
Infrastructure

OpenTofu : migrer depuis Terraform sans douleur

OpenTofu est le fork open source de Terraform sous Linux Foundation après le passage de Terraform en BSL. Compatibilité, fonctionnalités exclusives (state encryption), procédure de migration depuis Terraform 1.5.

18 mai 2026

Lire plus

Coolify : un PaaS open source pour remplacer Heroku, Vercel ou Netlify
DevOps
Cloud
Infrastructure

Coolify : un PaaS open source pour remplacer Heroku, Vercel ou Netlify

Coolify est une alternative open source self-hosted à Heroku, Vercel et Netlify. Déploiement Git push, base de données managées, 280+ services en un clic. Architecture, déploiement, comparaison Dokku.

16 mai 2026

Lire plus


SHPV, votre partenaire de confiance en infrastructure et infogérance informatique en France.

SHPV
Contactez-nousNous contacter
Expertise
InfrastructureDatacenterInfogéranceCloudHébergementTransit IP
Légales
Conditions Générales de VenteCPS - Contrat de ServicesCPS - Hébergement CloudCPS - Microsoft 365Accord sous-traitance RGPDTarifs interventions

SHPV © 2026 - Tous droits réservés

Mentions légalesPolitiques de confidentialité
SHPV FRANCE - SAS au capital de 16 000 € - 52 Rue Romain Rolland, 71230 Saint-Vallier - SIRET n°80886287400035 - R.C.S. Chalon-sur-Saône. Par téléphone 09 72 310 818 - Email: support@shpv.fr