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.
# […] 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
.