Votre espace a été migré vers le nouveau wiki le 21/08/2023 : https://wiki.univ-lorraine.fr/wiki/perso/view/zimmerm15
Les modifications apportées ici depuis cette date ne seront pas reportées. Le wikidocs disparaitra définitivement le 31/01/2024.

Le comportement de la ressource file dans puppet n'est pas forcément évidente à comprendre, surtout quand on veut faire des opérations récursives sur des répertoires.

Voici le comportement constaté et compris à partir de la documentation de référence sur le site de puppetlabs (http://docs.puppetlabs.com/references/latest/type.html#file).

Exemple

Nous voulons faire en sorte de récupérer un ensemble de fichiers propres à un utilisateur unix (donc une arborescence) à coller dans son répertoire home. Typiquement : ses adaptations locales de fichiers de configuration de certains logiciels comme, par exemple, bash, vim, emacs, git, etc.

Utilisation de file sur un répertoire
# […]
  file { $home:
    ensure  => directory,
    owner   => $login,
    group   => $gid,
    mode    => "0600",
    recurse => remote,
    source  => "puppet:///modules/users/site-login/${login}",
  }
# […]

Avec un mode valant 0600 et le type de récursion valant remote, les répertoires et sous-répertoires auront les droits 0700 et les fichiers 0600 mais seulement pour le répertoire désigné ($home ici) ainsi que tous les sous-répertoires et fichiers venant de la source. Pour tous les autres répertoires et fichiers, les droits resteront inchangés. C'est le sens de remote.

Si, à la place de remote, on mettait true, tous les répertoires et fichiers à partir de $home verraient leurs droits modifiés à 0700 et 0600.

Enfin, si, au lieu de mettre comme mode 0600, on mettait le mode 0700, tous les répertoires et fichiers auraient les droits 0700.