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.

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',
}

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 
}

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.