Un ingénieur Puppet arrive presque toujours sur une infrastructure en place : des centaines ou des milliers de serveurs RHEL, des modules maison mêlés à ceux de la Forge, un dépôt de contrôle déployé par r10k ou Code Manager. Les offres demandent le maintien en condition opérationnelle de la chaîne Puppet, l'évolution des modules, des astreintes, et souvent Ansible et Terraform en complément.
L'outil a changé de contexte. Depuis début 2025, Perforce ne publie plus librement les paquets de Puppet open source : la distribution de l'éditeur s'appelle Puppet Core, et la communauté Vox Pupuli maintient OpenVox, un fork compatible. Puppet Enterprise en est à la version 2026.0. Un candidat à jour sait sur quelle distribution tourne son parc et ce que coûterait un changement.
En entretien, la personne suit un changement de bout en bout : une valeur Hiera modifiée, la merge request, le déploiement de l'environnement, le premier passage d'agent en noop, le rapport dans PuppetDB. Un profil solide parle aussi de rôles et profils, de tests rspec-puppet et du temps de compilation des catalogues. Le PDF propose 30 questions sur six axes, un cas de 20 minutes et une grille de 1 à 4.
Langage, données et serveurs : la chaîne Puppet en neuf briques
Langage Puppet
Un langage déclaratif : on décrit des ressources (paquet, fichier, service, utilisateur) et leur état, regroupées en classes et en defined types. Les relations (require, notify, subscribe) fixent l'ordre et les redémarrages. Facter fournit les faits du serveur, comme l'OS ou les interfaces, utilisés dans le code.
Rôles et profils
Le modèle d'organisation le plus répandu. Les modules de composants restent génériques, les profils les assemblent pour une technologie avec les données de l'organisation, et chaque serveur reçoit un seul rôle qui inclut ses profils. Un code qui ne suit pas ce modèle est souvent difficile à reprendre.
Hiera
Le système de données de Puppet : des valeurs en YAML ou JSON, cherchées dans une hiérarchie construite sur les faits (nœud, rôle, site, OS). Trois couches (globale, environnement, module) et des stratégies de fusion décident de la valeur retenue. hiera-eyaml chiffre les secrets. puppet lookup --explain montre d'où vient une valeur.
r10k et Code Manager
Le code vit dans un dépôt de contrôle : chaque branche devient un environnement Puppet, avec les modules listés dans un Puppetfile. r10k déploie ces environnements sur les serveurs. Code Manager, dans Puppet Enterprise, s'appuie sur r10k et réplique le code sur tous les serveurs de compilation.
Puppet Server et agents
L'agent envoie ses faits, Puppet Server compile un catalogue à partir du code et des données, l'agent l'applique et renvoie un rapport. Par défaut, il repasse toutes les trente minutes et corrige toute dérive. Le serveur tourne sur la JVM avec des instances JRuby, à dimensionner selon le parc. Une autorité de certification interne authentifie chaque nœud.
PuppetDB
La base qui stocke faits, catalogues et rapports de tous les nœuds. On l'interroge en PQL pour savoir quels serveurs ont échoué, lesquels n'ont plus rapporté ou lesquels ont telle version d'OS. Elle porte aussi les ressources exportées d'un nœud vers un autre.
Puppet Core, Puppet Enterprise, OpenVox
Trois distributions depuis 2025. Puppet Core est la version open source construite et supportée par Perforce, gratuite seulement en petit volume. Puppet Enterprise ajoute console, classificateur, Code Manager et support. OpenVox est le fork communautaire mené par Vox Pupuli, avec des versions 8 et 9 publiées régulièrement.
PDK, rspec-puppet, onceover
Le PDK crée le squelette d'un module et lance les contrôles : puppet-lint, validation, tests rspec-puppet qui vérifient le contenu du catalogue. onceover compile tous les rôles d'un dépôt de contrôle. Un candidat qui n'a jamais écrit de test rspec-puppet a probablement toujours testé en noop.
Bolt et Foreman
Bolt lance des tâches et des plans à la demande, sans agent, pour ce que le passage régulier de Puppet ne couvre pas : redémarrages ordonnés, correctifs, diagnostics. Foreman sert souvent de classificateur et de console sur les parcs Puppet open source, avec le provisionnement des serveurs.
Le poste porte des noms variés : ingénieur Puppet, expert Linux et Puppet, ingénieur système automatisation, DevOps Linux. On le trouve surtout là où Puppet a été déployé tôt sur de grands parcs Linux et où le code a grossi avec les années. Le travail se partage entre le run (serveurs Puppet, certificats, performance de compilation, agents en échec) et l'évolution du code : refonte en rôles et profils, sortie des données vers Hiera, passage à Puppet 8, choix entre Puppet Core, Puppet Enterprise et OpenVox. Certaines équipes préparent une migration partielle vers Ansible. Le candidat doit alors comprendre les deux modèles : un état désiré appliqué en continu par un agent, et des exécutions ponctuelles lancées depuis un poste ou une plateforme.
Puppet : ce que le candidat doit maîtriser, du langage au serveur
- Langage Puppet et relations entre ressources
- Rôles, profils et conception des modules
- Données Hiera et secrets
- Déploiement du code : r10k, Code Manager, environnements
- Puppet Server, PuppetDB et performance
- Tests et montées de version (Puppet 8, OpenVox)
Cinq questions Puppet tirées de l'exploitation d'un parc
Chaque question vient avec ce qu'une bonne réponse contient et le signal qui doit vous alerter. Pas besoin d'être technique pour les poser : écoutez si le candidat raconte du vécu.
Question 1 · junior à confirmé
Un fichier de configuration est modifié, mais le service n'est pas redémarré. Comment liez-vous les deux ressources dans Puppet ?
Une bonne réponseLe fichier notifie le service : notify sur le fichier, subscribe sur le service, ou la flèche ~>. Avec require, before ou ->, l'ordre est garanti mais pas le rafraîchissement. Il pose la chaîne complète paquet, fichier, service. Il sait que Puppet suit l'ordre du manifeste pour les ressources sans relation, et déclare quand même les relations utiles.
Signal d'alerteUn exec qui lance systemctl restart à chaque passage de l'agent.
Question 2 · confirmé
Une valeur Hiera inattendue s'applique à un serveur et personne ne sait pourquoi. Comment trouvez-vous d'où elle vient ?
Une bonne réponseAvec puppet lookup --explain pour ce nœud, qui montre chaque niveau de la hiérarchie consulté et celui qui a répondu. Il vérifie les faits utilisés dans hiera.yaml (rôle, environnement, site), la couche (globale, environnement, module) et la stratégie de fusion de la clé (first, unique, hash, deep). Souvent, un fait mal renseigné envoie le nœud dans le mauvais fichier.
Signal d'alerteUn grep de la clé dans tous les fichiers YAML, ou des modifications successives jusqu'à ce que la valeur change.
Question 3 · confirmé
Un développeur pousse une branche feature dans le dépôt de contrôle. Que fait r10k, et comment testez-vous la branche sans toucher à la production ?
Une bonne réponser10k crée un environnement Puppet du nom de la branche, avec les modules listés dans son Puppetfile. Il lance un agent en noop sur un nœud de test avec --environment, ou rattache temporairement ce nœud à l'environnement dans le classificateur, puis lit le rapport. Il épingle les modules du Puppetfile sur une version ou un tag, sinon la production change sans merge.
Signal d'alerteTester directement dans l'environnement production, ou ignorer que chaque branche devient un environnement.
Question 4 · senior
La compilation des catalogues ralentit et des agents tombent en timeout aux heures pleines. Que regardez-vous sur Puppet Server ?
Une bonne réponseLes métriques de Puppet Server : instances JRuby occupées, file d'attente, temps de compilation par nœud et par environnement, mémoire de la JVM. Il ajuste max-active-instances et la taille du heap, met en cache les environnements, étale les passages des agents (splay) et cherche les catalogues lourds : fonctions coûteuses, requêtes PuppetDB dans le code, milliers de ressources file. Au-delà, il ajoute des serveurs de compilation derrière un répartiteur.
Signal d'alerteAjouter de la mémoire sans mesurer, ou espacer les passages des agents à plusieurs heures.
Question 5 · senior
Votre parc tourne en Puppet 7 et doit passer en Puppet 8. Comment préparez-vous la migration ?
Une bonne réponseUn inventaire des modules de la Forge et des modules internes avec leur compatibilité. La recherche des faits hérités ($::osfamily, $::operatingsystemrelease) à remplacer par les faits structurés ($facts['os']['family']), que Puppet 8 ne collecte plus par défaut. Le mode strict, actif par défaut, fait échouer les variables non définies. Il compare les catalogues avant et après, met à jour serveurs et PuppetDB avant les agents, puis migre les agents par lots.
Signal d'alerteMettre à jour tous les agents d'un coup et corriger les erreurs en production.
Recevez la fiche d'entretien complète en PDF
La fiche pour mener l'entretien de bout en bout, prête à imprimer ou à partager avec le manager.
- 30 questions sur 6 axes, avec la bonne réponse, le signal d'alerte et la relance
- Le niveau visé pour chaque question
- Une mise en situation de 20 minutes et ce qu'on attend du candidat
- La grille d'évaluation de 1 à 4, axe par axe
Puppet : quatre questions fréquentes
Un profil Ansible peut-il reprendre un parc Puppet ?
Il connaît la gestion de configuration et l'idempotence, ce qui aide. Il lui manque le modèle à agent : compilation côté serveur, catalogue, certificats, passages réguliers qui corrigent la dérive, données dans Hiera. Sur un code existant de plusieurs années, il faut plusieurs semaines d'adaptation. Pour un poste d'exploitation avec astreintes, mieux vaut avoir déjà tenu un Puppet Server et lu des rapports PuppetDB.
À quoi ressemble un bon test technique pour un ingénieur Puppet ?
Un petit dépôt de contrôle avec un module défectueux : une relation manquante entre fichier et service, une valeur Hiera mal placée, un exec sans garde. La personne lance rspec-puppet ou une compilation, explique ce qu'elle lit et corrige. Reste un puppet lookup --explain à interpréter. En quarante minutes, on voit si elle raisonne en catalogue et en données, ou en scripts.
Faut-il savoir programmer en Ruby pour ce poste ?
Pas pour écrire des manifestes au quotidien. Ruby sert pour les faits personnalisés, les fonctions, les types et providers maison et les tests rspec-puppet. Sur un parc où le code interne contient ces éléments, un minimum de Ruby devient nécessaire. La question est de savoir s'il a écrit un fait ou un type, et ce qu'il faisait.
Puppet Core, Puppet Enterprise ou OpenVox : qu'attendre du candidat ?
Le candidat précise sur quelle distribution tournait son dernier parc et s'il a suivi le changement de 2025, quand Perforce a cessé de publier librement les paquets open source. Un bon profil connaît les trois options, sait que le langage et les modules restent les mêmes, et cite ce qui change : support, licence, outils de la console et de Code Manager. Le choix de la cible revient à l'équipe, mais le candidat doit pouvoir l'éclairer.
Pour structurer vos autres entretiens, consultez aussi nos pages sur les questions d'entretien de recrutement, la méthode de l'entretien structuré et la grille d'évaluation d'entretien.




