Puppet est un outil de gestion de configuration : vous décrivez l'état voulu d'une machine (paquets installés, services démarrés, fichiers en place) et Puppet l'applique, puis le maintient dans le temps. Dans ce cours, vous le découvrez en pratique sur des conteneurs Docker jetables plutôt que sur de vrais serveurs : rien à louer, rien à casser.
L'implémentation utilisée est OpenVox, l'édition open source communautaire de Puppet 8, maintenue par Vox Pupuli depuis que l'éditeur Perforce a fermé la distribution de ses binaires en 2025. Le langage, les commandes et les modules sont ceux de Puppet : tout ce que vous apprenez ici s'applique à Puppet Core et à Puppet Enterprise.
Pour qui ?
Ce cours vise un débutant en Puppet. Il suppose que vous savez :
- utiliser un terminal bash (se déplacer, lancer une commande, lire une erreur) ;
- lancer et supprimer un conteneur Docker (
docker run,docker exec,docker rm) ; - ce qu'est un paquet, un service et un fichier de configuration sous Linux.
Il ne suppose aucune connaissance de Puppet ni de Ruby. Si vous connaissez Ansible, le cours fait régulièrement le parallèle : les notions se correspondent presque une à une.
Ce qu'il faut sur votre poste
| Outil | Version | Pourquoi |
|---|---|---|
| bash | macOS, Linux, ou WSL 2 sous Windows | les commandes du cours sont des commandes bash |
| Docker | Docker Engine ou Docker Desktop récent, avec Compose v2 | les machines à configurer sont des conteneurs ; la pile serveur du chapitre 5 est un fichier Compose |
curl | n'importe quelle version | tester les pages web produites |
| Mémoire | 4 Go disponibles pour Docker à partir du chapitre 5 | le serveur Puppet et PuppetDB sont deux applications Java |
Puppet lui-même n'est pas à installer sur votre poste : il vit dans les conteneurs. Le premier chapitre vérifie les outils et construit l'image de base.
Comment se déroule le cours
Chaque étape alterne explications, commandes à lancer (bouton ▶) et vérifications : une vérification regarde l'état réel de vos conteneurs et de vos fichiers, pas les commandes que vous avez tapées. Chaque chapitre se termine par un quiz noté qui le valide.
Tous vos fichiers vont dans le dossier atelier/, à la racine de ce dépôt (il est ignoré par
git). Ce dossier est monté dans les conteneurs à l'endroit où Puppet attend son code,
/etc/puppetlabs/code : vous éditez sur votre poste, Puppet lit dans le conteneur. Les
conteneurs que le cours crée s'appellent tous layers-puppet… (et l'image des nœuds
layers-openvox-agent) ; ils écoutent sur des ports entre 28140 et 28199, pour ne jamais se mélanger avec vos propres projets.
Le parcours
Les quatre premiers chapitres travaillent sur un seul conteneur, sans serveur Puppet, avec
la commande puppet apply : c'est la façon la plus simple d'apprendre le langage. Les suivants
ajoutent le serveur, les agents et les données.
- Installation et concepts : ce qu'est Puppet, le paysage des outils en 2026, et un
premier nœud où l'on interroge l'état réel avec
puppet resource. - Premier manifest : un serveur web nginx décrit en trois ressources, l'idempotence, la correction d'une dérive, et l'ordonnancement des ressources.
- Le langage : variables, facts, conditions, boucles, et des templates EPP.
- Modules et Forge : ranger le code en module avec des classes paramétrées, un manifest principal, puis installer des modules du Forge avec r10k.
- Serveur et agents : la pile OpenVox (serveur, PuppetDB, Puppetboard), les certificats,
le premier
puppet agent -tet les rapports. - Nœuds, facts et Hiera : donner un rôle à chaque nœud, et sortir les données du code.
- Rôles, profils et projet final : le pattern roles/profiles et un WordPress complet déployé sur un nœud, une page statique sur l'autre.
- Outillage et écosystème : lint, PDK, Bolt, Puppet Enterprise, et où en est Puppet face à Ansible, Chef, Salt et Terraform.
Les chapitres 2 à 4 construisent le même projet dans atelier/, sur le même conteneur :
suivez-les dans l'ordre. Le chapitre 5 remplace ce conteneur par la pile Compose, que les
chapitres 6 et 7 réutilisent.