GUIDE TECHNIQUE · PUPPET
Puppet : Créer des classes et modules réutilisables
Structurer la configuration Puppet en classes et modules réutilisables : nommage des fichiers, paramètres typés, classification et contrôle d'un catalogue sur un environnement isolé.
L’ESSENTIEL EN BREF
Les étapes clés
Ce guide présente 4 étapes, de « Concevoir une responsabilité de module » à « Valider le module et tester deux passes ».
Avant de commencer : Laboratoire disposant de Puppet CLI et d'un modulepath local.
01 · CADRAGE
Périmètre et résultat visé
Résultat attendu : L'arborescence du module correspond au nom de classe.
Public concerné : Administrateurs Puppet, DevOps et responsables de configuration Linux
Puppet Core et arborescence de module standard avec manifests/init.pp ; les versions de modules Puppet Forge doivent être validées sur la plateforme cible.
Contrôlez les versions, les droits et les options disponibles dans votre environnement avant de suivre la procédure.
02 · AVANT DE COMMENCER
Prérequis et points de contrôle
- Laboratoire disposant de Puppet CLI et d'un modulepath local.
- Une convention de noms de modules et de classes définie avant développement.
- Un changement de configuration réversible sans installation de logiciel sensible.
03 · VUE D’ENSEMBLE
Comprendre l’architecture et les flux
04 · TUTORIEL
Procédure complète, étape par étape
Suivez les étapes dans l’ordre et contrôlez chaque résultat avant de poursuivre. Renseignez les paramètres adaptés à votre environnement.
ÉTAPE 1 / 4
Concevoir une responsabilité de module
Un module maintenable encapsule une capacité clairement bornée.
- Créer l'arborescence site_profile/manifests.
- Distinguer déclaration de classe et utilisation de la classe.
mkdir -p modules/site_profile/manifests
find modules -type dÀ vérifier : Le chemin modules/site_profile/manifests est présent.
Point de vigilance : Exécuter les opérations uniquement sur un environnement de recette autorisé, sans secret ni donnée de production.
ÉTAPE 2 / 4
Écrire une classe paramétrée
Les paramètres explicites permettent d'utiliser le même code dans plusieurs environnements.
- Créer modules/site_profile/manifests/init.pp.
- Définir un paramètre typé pour le message et une ressource isolée.
class site_profile (String $message = 'recette') {
file { '/tmp/puppet-profile.txt':
ensure => file,
content => "${message}\n",
}
}À vérifier : La classe peut être appelée avec ou sans paramètre.
Point de vigilance : Exécuter les opérations uniquement sur un environnement de recette autorisé, sans secret ni donnée de production.
ÉTAPE 3 / 4
Déclarer la classe depuis le manifeste racine
Une classe définie mais jamais déclarée ne configure pas le nœud.
- Créer site.pp à la racine de l'exercice.
- Référencer la classe et transmettre la valeur voulue.
class { 'site_profile':
message => 'integration',
}À vérifier : Le catalogue contient la ressource gérée par la classe.
Point de vigilance : Exécuter les opérations uniquement sur un environnement de recette autorisé, sans secret ni donnée de production.
ÉTAPE 4 / 4
Valider le module et tester deux passes
Le contrat de la classe doit rester déterministe.
- Valider les manifests puis compiler le catalogue en noop avec le modulepath explicite.
- Effectuer l'application uniquement sur la machine de recette et relancer.
puppet parser validate site.pp
puppet parser validate modules/site_profile/manifests/init.pp
puppet apply --modulepath=modules --noop site.pp
puppet apply --modulepath=modules site.ppÀ vérifier : La classe est chargée et gère le fichier de recette.
Point de vigilance : Exécuter les opérations uniquement sur un environnement de recette autorisé, sans secret ni donnée de production.
RÉFÉRENCES TECHNIQUES
Documentation officielle
Retrouvez les prérequis, les fonctionnalités et les versions prises en charge par Puppet. Vérifiez les commandes sur un environnement de test avant leur utilisation en production.
05 · RECETTE
Comment vérifier que tout fonctionne ?
L'arborescence du module correspond au nom de classe.
La classe est résolue par le modulepath.
La valeur transmise apparaît dans le fichier et la seconde passe reste stable.
06 · DIAGNOSTIC
Problèmes fréquents et résolution
Could not find class
Cause probable : Modulepath incorrect ou nom de fichier non conforme
Que faire : Contrôler modules/site_profile/manifests/init.pp et le nom site_profile.
Duplicate declaration
Cause probable : La même ressource ou classe est déclarée plusieurs fois
Que faire : Réorganiser les responsabilités et éviter plusieurs propriétaires du même fichier.
Invalid relationship
Cause probable : Dépendance vers une ressource absente du catalogue
Que faire : Vérifier les références et la classification avant déploiement.
07 · QUESTIONS PRATIQUES
Questions fréquentes
Module et classe, quelle différence ?
Le module est un ensemble de fichiers et composants ; la classe est un bloc de déclaration réutilisable.
Faut-il inclure une classe ?
Oui : une définition seule ne l'ajoute pas au catalogue.
Quand utiliser Puppet Forge ?
Pour réutiliser des modules vérifiés, tout en épinglant les versions et en évaluant leur maintenance.
AUTRES TECHNOLOGIES
Guides complémentaires
VOTRE ENVIRONNEMENT
Besoin d’aller plus loin sur votre environnement ?
Automatisation, sécurité et exploitation : échangeons sur vos pratiques Puppet.
Échanger avec ADN Consulting