marionnette ne s'exécute que lorsque le fichier n'existe PAS


11

Je veux uniquement exécuter la commande suivante lorsque le fichier (/ usr / local / bin / papply) n'existe pas. Je ne sais pas quoi y mettre.

    exec { 'git add url':
        command =>'git remote add origin https://github.com/testing/puppet.git',
        require => Exec['git init'],
        cwd => '/home/vagrant/django',
        user => 'vagrant',
        onlyif => "not sure what to put here"
    }

Réponses:


22

Avez-vous essayé cela?

onlyif => "test ! -f /usr/local/bin/papply"

Je ne sais pas si Puppet peut utiliser le '!' personnage

Peut-être une meilleure alternative:

creates => '/usr/local/bin/papply'

même si je n'aime pas le fait que la commande ne crée pas vraiment le fichier


ne fonctionne pas, a obtenu ce message d'erreur. Impossible d'évaluer: impossible de trouver la commande '!'
qinking126

Et ceci: onlyif => "test! -F / usr / local / bin / papply"
sebastien.prudhomme

crée => '/ usr / local / bin / papply' fonctionne, merci. laissez-moi tester vos mises à jour, voir si htat one fonctionne.
qinking126

1
onlyif => "test! -f / usr / local / bin / papply" fonctionne, aussi celui que je préfère utiliser. Merci.
qinking126

7

Si vous êtes sous Linux, faites-le

unless => 'ls /somefile'

ls retournera avec un code retour différent de zéro si le fichier n'existe pas et à moins qu'il ne laisse l'exécutable qu'il est en cours d'exécution si son test retourne un code retour non nul.


1

Sous linux et marionnette> 3.8, essayez:

exec { 'test':
   command => '/bin/echo HI',
   unless  => 'test -f /a/file.txt',
}

exec ne fonctionnera pas s'il /a/file.txtexiste.


0

Vous pouvez envisager d'utiliser create , qui existe à cet effet:

exec { 'git add url':
  command => 'git remote add origin https://github.com/testing/puppet.git',
  creates => '/usr/local/bin/papply'
}
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.