Test de marionnettes si un fichier existe

8

Je cherche un moyen de tester si un fichier existe dans mon client (testez simplement pas la création). J'ai trouvé le chemin (File.exists) dans chef mais ce n'était pas simple avec des marionnettes.

Merci d'avance.

bazic
la source

Réponses:

6

La façon "native" de le faire sans exec si vous êtes sur Puppet 2.6.6+:

file { '/path/to/myfile':
  ensure => 'present',
  audit  => 'all',
}

(Cette fonctionnalité existe depuis Puppet 2.6.0, mais il y avait un certain nombre de problèmes avec l'audit qui n'ont vraiment été résolus qu'avec la version 2.6.6.)

Si vous utilisez une version antérieure, vous pouvez également indiquer à la ressource de s'exécuter en noopmode, qui affichera simplement un message lorsque Puppet est exécuté et que le fichier n'existe pas:

file { '/path/to/myfile':
  ensure => 'present',
  noop   => 'true',
}
jgoldschrafe
la source
Ouais. c'est super avec la nouvelle version de la marionnette ov. ive travaille avec la pré 2.6.0 et doit écrire ma propre fonction ruby ​​pour que le fichier existe / cocher vide.
MealstroM
9

Vous devez créer votre propre fonction ou utiliser exec avec la commande onlyif. quelque chose comme :

exec { "mycommand":
  path => "/usr/bin:/usr/sbin:/bin",
  onlyif => "test -f /etc/blalba" //yours command 
}
MealstroM
la source
assurez-vous que => présent créera le fichier s'il n'existe pas. bazic ne veut que le tester et non le créer. Voir docs: docs.puppetlabs.com/references/stable/type.html#file
shakalandy
Merci, mais rien d'intéressant dans les documents.
bazic
ive a mis à jour ma réponse
MealstroM
1
@MealstroM: " creates => '/etc/blabla'" ne serait-il pas mieux qu'un " onlyif"?
freiheit
1
@MealstroM: Dans ce cas particulier, createsaurait le même résultat et serait beaucoup plus simple (et un peu plus rapide). Oui, en général, onlyifoffre plus de flexibilité.
freiheit