Aller au contenu
Infrastructure as Code medium

Ansible vs Terraform vs Puppet : quel outil pour quel besoin ?

12 min de lecture

Logo Ansible

Vous découvrez Ansible et vous vous demandez pourquoi tout le monde parle aussi de Terraform, Puppet, Chef, Salt — et lequel choisir. La bonne nouvelle : ces outils ne sont pas concurrents, ils répondent à des besoins distincts. La mauvaise : la presse technique les mélange souvent, et un mauvais choix initial coûte cher en réécriture. Cette page vous donne un tableau de décision clair pour situer Ansible et choisir le bon outil par cas d’usage.

Analogie : si on construit une maison, Terraform est l’architecte qui pose les fondations et la structure (l’infrastructure : VMs, réseaux, disques). Ansible est l’électricien-plombier qui équipe les pièces (configuration : paquets, services, fichiers, utilisateurs). Puppet est l’inspecteur permanent qui repasse vérifier que tout reste conforme (agent permanent, drift correction). Vous avez besoin des trois rôles, mais à des moments différents — pas du même outil pour tout.

Avant le détail technique, voici la décision en une ligne par cas typique. Lisez la colonne « Si vous voulez » et l’outil de la colonne « Choisissez » est votre point de départ.

Si vous voulez…ChoisissezPourquoi
Créer une infra cloud (EC2, Azure VM, OVH bare-metal)TerraformState + plan + dépendances entre ressources
Configurer des serveurs déjà créés (paquets, services, secrets)AnsiblePush SSH, agentless, déclaratif
Préparer la certification RHCEAnsibleSeule certification Red Hat sur ce périmètre
Maintenir une fleet 1000+ serveurs avec correction continuePuppet ou SaltModèle pull avec agent permanent et drift correction
Automatiser un homelab / projet persoAnsibleCourbe d’apprentissage la plus douce
Débuter en IaC sans rien casserTerraform ou AnsibleLes deux ont une excellente documentation francophone

La conclusion pratique : pour 80 % des sysadmins Linux français qui démarrent en 2026, Terraform + Ansible forment le couple gagnant — Terraform crée l’infrastructure, Ansible la configure. Puppet, Chef, Salt sont d’excellents outils mais leur écosystème entreprise et leur courbe d’apprentissage les rendent moins accessibles en première approche.

Quatre dimensions structurent la comparaison. Comprendre ces dimensions vous évite de comparer deux outils sur le mauvais critère et d’arriver à une mauvaise conclusion.

Le paradigme distingue le déclaratif (« je veux cet état ») de l’impératif (« fais ces actions dans cet ordre »). Terraform, Ansible, Puppet, Chef et Salt sont tous déclaratifs en sortie, mais leur ressenti côté écriture varie. Le code Ansible ressemble à de l’impératif (une suite de tâches), alors que le code Terraform est franchement déclaratif (une description de ressources). Voir le détail dans Déclaratif vs impératif.

Le mode de communication distingue le push (le control node se connecte aux cibles à la demande) du pull (un agent permanent sur la cible contacte le master à intervalle régulier). Ansible est purement push. Puppet et Chef sont purement pull. Salt fait les deux. Le push est plus simple à démarrer, le pull est plus adapté aux fleets de 10 000+ serveurs où le master ne peut pas joindre toutes les cibles en parallèle.

L’agent est le programme qui tourne sur la cible. Ansible n’en a pas (juste sshd + Python). Puppet, Chef ont un agent à installer et maintenir partout. Cette différence a un coût opérationnel : l’agent doit être déployé, mis à jour, surveillé, et chiffrer ses échanges avec le master via une PKI. C’est un cost-center sur 1000 serveurs ; c’est de l’overhead pour 50.

L’état (state) est la connaissance que l’outil garde de l’infrastructure. Terraform maintient un fichier terraform.tfstate qui mappe ce qui devrait exister à ce qui existe réellement — c’est ce qui permet terraform plan de calculer le diff. Ansible ne maintient aucun état ; il vérifie tout à chaque run. Puppet maintient un catalog compilé par le master. Chacune de ces approches a ses forces : le state Terraform donne du plan précis ; l’absence de state d’Ansible évite les corruptions de fichier ; le catalog Puppet permet l’audit centralisé.

Le tableau ci-dessous compare les six outils les plus pertinents en 2026 sur huit dimensions techniques. Lisez les colonnes : à gauche le critère, à droite la valeur pour chaque outil. Les cellules en gras sont les points forts marquants.

CritèreAnsibleTerraformPuppetChefSaltPyInfra
Périmètre principalConfigurationProvisioningConfigurationConfigurationConfig + provisioningConfiguration
ParadigmeDéclaratif (procédural en surface)Déclaratif purDéclaratifImpératif (Ruby DSL)DéclaratifDéclaratif
ModePush (SSH)API providersPull (agent)Pull (agent)Push ou pullPush (SSH)
Agent côté cibleAucunN/AOui (puppet-agent)Oui (chef-client)Oui (minion)Aucun
LangageYAML + Jinja2HCLPuppet DSLRuby DSLYAML + PythonPython
IdempotencePortée par les modulesNativeNativeNativeNativeNative
État (state)Aucunterraform.tfstateCatalog côté masterCookbook côté serverPillar côté masterAucun
CommunautéTrès large (Galaxy)Très large (Registry)Mature, en érosionEn érosionActive mais nichePetite, croissance
Certification éditeurRHCE EX294Associate, ProfessionalPas active 2026DiscontinuéeAucuneAucune
Langue ressources FRExcellentExcellentModéréLimitéLimitéLimité
Force principaleAgentless, simpleState, plan, multi-cloudDrift correction continueFlexibilité RubyPerformance fleet 10k+Vrai code Python
Faiblesse principalePerformance >1000 nœudsPas de config OSAgent à maintenirAdoption en baisseCommunauté nicheÉcosystème limité

La conclusion qui ressort de ce tableau : Ansible et Terraform dominent l’usage en 2026 grâce à leur courbe d’apprentissage douce, leur communauté large et leurs ressources francophones abondantes. Puppet, Chef, Salt restent excellents techniquement mais leur écosystème entreprise les rend moins accessibles aux sysadmins individuels et aux équipes en démarrage.

Vous voilà avec le panorama théorique. Passons aux scénarios concrets que vous rencontrerez. Pour chaque cas, l’outil principal est en gras, les outils complémentaires en italique.

« Je veux déployer une infra cloud (EC2, Azure VM, GCP, Outscale) avec mes premiers serveurs Ansible » : c’est le couple le plus standard. Vous utilisez Terraform pour provisionner les VMs, le réseau, les volumes, les groupes de sécurité. Une fois les VMs up, Terraform sort un fichier d’inventaire (output inventory.yml) que Ansible consomme pour configurer les OS, déployer les applications, gérer les secrets. Cette répartition est le pattern de référence chez tous les hébergeurs en 2026.

« Je dois durcir 50 serveurs RHEL selon ANSSI-BP-028 » : Ansible seul. Terraform n’est pas adapté (vous ne créez pas l’infra, juste vous la configurez). Vous écrivez un rôle anssi-bp-028 qui applique les paramètres sysctl, les permissions de fichiers, les profils SELinux, les règles firewalld. Ce rôle s’exécute en quelques minutes sur la fleet et reste idempotent — vous pouvez le rejouer mensuellement pour vérifier la conformité.

« Je veux une infra qui se reconfigure automatiquement si quelqu’un la modifie à la main » : c’est le terrain de Puppet. L’agent permanent contacte le master toutes les 30 minutes par défaut, télécharge le catalog, et réapplique l’état désiré en corrigeant toute dérive. C’est plus rigide qu’Ansible mais plus protecteur. Chef offre la même mécanique pull avec un DSL Ruby plutôt que le DSL Puppet. Salt couvre aussi ce besoin avec un compromis push/pull différent.

« J’automatise mon homelab Proxmox / KVM » : Ansible est le bon point de départ. Vous définissez un inventaire dynamique (plugin community.general.proxmox), vous écrivez quelques playbooks pour vos VMs (Pi-hole, NextCloud, Vault), et vous les rejouez à chaque besoin. Ajouter Terraform plus tard si vous voulez automatiser la création des VMs (cf. notre lab kubeadm-kvm qui utilise ce pattern).

« Je veux préparer une certification reconnue pour valider mes compétences » : RHCE EX294 côté Ansible, Terraform Associate 003 ou Terraform Professional côté HashiCorp. Puppet a eu des certifications mais leur statut 2026 est flou. Chef ne propose plus de certification active. Pour un sysadmin Linux qui veut une preuve officielle reconnue par les employeurs francophones, RHCE est l’investissement le plus rentable en 2026.

Combiner Ansible et Terraform : le pattern qui marche

Section intitulée « Combiner Ansible et Terraform : le pattern qui marche »

Ce n’est pas une dichotomie. La combinaison Terraform + Ansible est tellement courante qu’il y a même un module Terraform qui invoque Ansible (ansible.terraform.local-exec). Le pattern fonctionne en trois étapes.

D’abord, Terraform crée l’infrastructure : VMs, réseau, disques, DNS, certificats. Le state Terraform mémorise quelles ressources existent et leurs IDs cloud. Vous obtenez en sortie une liste de hosts avec leurs IPs et leurs labels (« web1.lab », « db1.lab »).

Ensuite, Terraform produit un inventaire Ansible via un fichier de template ou un plugin d’inventaire dynamique. C’est typiquement un inventory.yml qui liste les groupes (webservers, dbservers) avec les IPs Terraform.

Enfin, Ansible consomme cet inventaire pour configurer les VMs : installation paquets, hardening OS, déploiement applicatif. Les rôles Ansible ne savent même pas que les VMs viennent de Terraform — ils ne voient qu’un inventaire standard.

Cette répartition vous évite la tentation d’utiliser le mauvais outil. Vous ne créez pas une VM avec Ansible (le module community.libvirt.virt existe mais c’est anti-pattern : pas de plan, pas de state, pas de gestion fine des dépendances). Vous ne configurez pas un OS avec Terraform (le provisioner existe mais HashiCorp recommande explicitement de ne pas s’en servir).

  • Ansible = configuration, push SSH, agentless, déclaratif. Brille sur 10 à 1000 serveurs.
  • Terraform = provisionnement, API providers, state. Indispensable pour créer de l’infrastructure cloud.
  • Puppet / Chef / Salt = configuration avec agent et drift correction. Excellents techniquement, écosystème en érosion 2026.
  • PyInfra = équivalent Ansible en Python pur. Niche mais croissance.
  • Le couple Terraform + Ansible est le pattern le plus courant en 2026. Terraform crée, Ansible configure.
  • Côté certification reconnue : RHCE EX294 (Ansible), Terraform Associate / Professional (HashiCorp). Les autres outils n’ont plus de programme actif majeur.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn