Puppet references

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
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