Puppet references
| Fiche express | |
|---|---|
| Type | Référence langage Puppet |
| Portée | Types de ressources natifs (core types) |
| Doc officielle | Type Reference · Metaparameter Reference |
| Voir aussi | Puppet · Puppet fonctions · Augeas |
Puppet references rassemble les principaux types de ressources natifs (core types) du langage Puppet — les briques de base déclarées dans un manifest pour décrire l'état souhaité d'un système (paquet installé, service démarré, fichier présent, utilisateur créé...).
Chaque type est présenté avec son squelette de déclaration et ses attributs les plus utilisés. Les descriptions sont volontairement condensées : pour le détail exhaustif et toujours à jour de chaque attribut, la commande puppet describe <type> exécutée localement ou la référence officielle font foi — les attributs et leur comportement peuvent varier selon la version de Puppet et le provider utilisé.
Rappel : au-delà des attributs propres à chaque type, toute ressource Puppet accepte aussi les métaparamètres (before, require, notify, subscribe, tag...) qui gèrent l'ordonnancement et les relations entre ressources — voir la référence des métaparamètres.
Gestion des paquets et services
package
Installe, met à jour ou supprime un paquet logiciel via le gestionnaire de paquets natif de l'OS (yum/dnf, apt, gem...).
package { 'resource title':
provider => # Backend à utiliser (yum, apt, gem, rpm, pip...)
name => # (namevar) Nom du paquet tel que connu par le provider
ensure => # État souhaité : present, absent, latest, purged, ou une version précise
source => # Emplacement du fichier paquet (requis par certains providers)
install_options => # Options supplémentaires passées à la commande d'installation
uninstall_options => # Options supplémentaires passées à la commande de suppression
responsefile => # Fichier de réponses pour une installation non interactive
configfiles => # Comportement sur les fichiers de config (garder/remplacer)
allow_virtual => # Autorise la résolution de noms de paquets virtuels
reinstall_on_refresh => # Réinstalle le paquet si la ressource est notifiée
# ...plus les métaparamètres applicables
}
service
Gère l'état (démarré/arrêté) et l'activation au démarrage d'un service système.
service { 'resource title':
name => # (namevar) Nom du service tel que connu par le système d'init
ensure => # running ou stopped
enable => # true/false : démarrage automatique au boot
provider => # Backend à utiliser (systemd, init, upstart...)
hasrestart => # Indique si l'init script supporte une commande restart dédiée
hasstatus => # Indique si l'init script supporte une commande status dédiée
start => # Commande de démarrage personnalisée (si non standard)
stop => # Commande d'arrêt personnalisée
restart => # Commande de redémarrage personnalisée
status => # Commande de vérification d'état personnalisée
pattern => # Motif recherché dans la table des process (providers sans commande status)
path => # Chemin(s) de recherche des scripts d'init
# ...plus les métaparamètres applicables
}
yumrepo
Gère la définition d'un dépôt YUM (fichier .repo), utile pour déployer soi-même les dépôts internes/tiers avant d'y installer des paquets.
yumrepo { 'resource title':
name => # (namevar) Nom du dépôt (section du fichier .repo)
ensure => # present ou absent
baseurl => # URL de base du dépôt
descr => # Description lisible du dépôt
enabled => # 1/0 : dépôt actif ou non
gpgcheck => # Vérification de la signature GPG des paquets
gpgkey => # URL de la clé GPG du dépôt
priority => # Priorité du dépôt (1-99), nécessite le plugin yum-priorities
proxy => # URL du proxy à utiliser pour ce dépôt
proxy_username => # Identifiant du proxy
proxy_password => # Mot de passe du proxy
sslverify => # Vérification des certificats SSL du dépôt
target => # Nom du fichier .repo écrit sur le disque
metadata_expire => # Durée avant expiration du cache de métadonnées
# ...plus les métaparamètres applicables
}
Utilisateurs et groupes
user
Gère un compte utilisateur local (ou distant selon provider : LDAP, AIX, Solaris...).
user { 'resource title':
name => # (namevar) Nom du compte
ensure => # present ou absent
uid => # UID numérique (attribué automatiquement si omis)
gid => # Groupe primaire (nom ou GID)
groups => # Groupes secondaires
home => # Répertoire personnel
managehome => # Crée/supprime le répertoire personnel avec le compte
shell => # Shell de connexion
comment => # Description (champ GECOS)
password => # Mot de passe déjà chiffré (hash), jamais en clair
password_max_age => # Âge maximal du mot de passe en jours
password_min_age => # Âge minimal du mot de passe en jours
expiry => # Date d'expiration du compte
system => # true si compte système (UID bas, pas de mail...)
allowdupe => # Autorise les UID dupliqués
purge_ssh_keys => # Purge les clés SSH autorisées non gérées par Puppet
forcelocal => # Force la gestion locale même si NSS pointe vers un annuaire distant
# ...plus les métaparamètres applicables
}
group
Gère un groupe local.
group { 'resource title':
name => # (namevar) Nom du groupe
ensure => # present ou absent
gid => # GID numérique
members => # Membres du groupe (providers d'annuaire uniquement)
system => # true si groupe système (GID bas)
allowdupe => # Autorise les GID dupliqués
forcelocal => # Force la gestion locale même si NSS pointe vers un annuaire distant
# ...plus les métaparamètres applicables
}
ssh_authorized_key
Gère une entrée dans un fichier authorized_keys SSH, indépendamment du fichier lui-même (permet de gérer plusieurs clés sans écraser les autres).
ssh_authorized_key { 'resource title':
name => # (namevar) Commentaire identifiant la clé (unique, sert d'identifiant)
ensure => # present ou absent
type => # Type de clé : ssh-rsa, ssh-ed25519, ecdsa-sha2-nistp256...
key => # La clé publique elle-même (partie encodée en base64)
user => # Compte système dont le fichier authorized_keys est modifié
target => # Chemin explicite du fichier, si différent du défaut pour l'utilisateur
options => # Options de la clé (voir sshd(8)) : command=, no-port-forwarding...
provider => # Backend à utiliser
# ...plus les métaparamètres applicables
}
Fichiers et configuration
file
Type le plus utilisé de Puppet : gère l'existence, le contenu, les permissions et le type (fichier, répertoire, lien) d'un chemin du système de fichiers.
file { 'resource title':
path => # (namevar) Chemin absolu du fichier à gérer
ensure => # present, absent, file, directory, ou link
content => # Contenu littéral du fichier (souvent via un template())
source => # Fichier source à copier (module, puppet:///, http, file)
owner => # Propriétaire du fichier
group => # Groupe propriétaire
mode => # Permissions (ex : '0644')
backup => # Sauvegarde du contenu remplacé (filebucket)
recurse => # Gestion récursive du contenu d'un répertoire
recurselimit => # Profondeur maximale de récursion
purge => # Purge les fichiers non gérés d'un répertoire (avec recurse)
replace => # Autorise ou non le remplacement d'un fichier/lien existant
force => # Force l'opération même si elle implique une perte de données
links => # Comportement vis-à-vis des liens symboliques rencontrés
target => # Cible du lien (si ensure => link)
validate_cmd => # Commande de validation de la syntaxe avant application
show_diff => # Affiche le diff du contenu remplacé dans les logs
selinux_ignore_defaults => # Ignore le contexte SELinux par défaut
seluser / selrole / seltype / selrange => # Contexte SELinux explicite
# ...plus les métaparamètres applicables
}
augeas
Applique une modification ciblée à un fichier de configuration structuré via Augeas (lentille/lens), sans avoir à gérer le fichier entier comme le ferait le type file — utile pour modifier une seule directive dans un fichier partagé.
augeas { 'resource title':
name => # (namevar) Nom de la tâche
context => # Chemin de contexte Augeas préfixé aux changements
changes => # Liste des commandes de modification Augeas à appliquer
incl => # Restreint le chargement à un fichier précis (ex : /etc/hosts)
lens => # Lentille Augeas à utiliser (ex : Hosts.lns), nécessite incl
load_path => # Chemin(s) supplémentaires de recherche de lentilles
onlyif => # Condition Augeas : n'applique les changements que si elle est vraie
root => # Racine du système de fichiers pour Augeas (chroot)
type_check => # Active la vérification de type Augeas
show_diff => # Affiche le diff du fichier modifié
force => # Force l'exécution même en cas d'avertissement
provider => # Backend à utiliser
returns => # Code de retour attendu de la commande Augeas
# ...plus les métaparamètres applicables
}
Voir Augeas pour la syntaxe complète des lentilles et des chemins de configuration.
mount
Gère une entrée de montage (fstab) et, optionnellement, l'état monté/démonté effectif.
mount { 'resource title':
name => # (namevar) Point de montage
ensure => # mounted, unmounted, present, ou absent
device => # Périphérique ou source à monter
fstype => # Type de système de fichiers
options => # Options de montage (une seule chaîne, séparée par des virgules)
atboot => # Montage au démarrage
dump => # Champ dump de fstab
pass => # Ordre de passage fsck (champ pass de fstab)
remounts => # Autorise un remount à chaud (mount -o remount)
blockdevice => # Périphérique à fsck (certains providers uniquement)
target => # Fichier table de montage à modifier (par défaut /etc/fstab)
provider => # Backend à utiliser
# ...plus les métaparamètres applicables
}
Réseau et résolution de noms
host
Gère une entrée statique du fichier /etc/hosts.
host { 'resource title':
name => # (namevar) Nom d'hôte principal de l'entrée
ensure => # present ou absent
ip => # Adresse IP (IPv4 ou IPv6)
host_aliases => # Alias supplémentaires pour ce même hôte
comment => # Commentaire attaché à la ligne
target => # Fichier dans lequel stocker l'entrée (par défaut /etc/hosts)
provider => # Backend à utiliser
# ...plus les métaparamètres applicables
}
Exemple :
host { 'app-server':
ensure => present,
ip => '192.0.2.10',
host_aliases => ['app', 'app.internal'],
}
Voir aussi
- Puppet — page hub de la sous-branche Puppet
- Puppet fonctions — fonctions natives du langage (à ne pas confondre avec les types de ressources)
- Puppet client — application des manifests côté agent
- Augeas — lentilles utilisées par le type
augeas - Hiera — externalisation des valeurs injectées dans ces ressources