web-dev-qa-db-fra.com

marionnette uniquement exécutée lorsque le fichier n'existe pas

Je veux seulement exécuter la commande suivante lorsque le fichier (/ usr/local/bin/perpply) n'existe pas. Je ne sais pas quoi mettre là-bas.

    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"
    }
11
qinking126

Avez-vous essayé cela?

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

Je ne sais pas si la marionnette 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

22

Si vous êtes sur Linux, faites juste

unless => 'ls /somefile'

lS reviendra avec un code de retour non nulle si le fichier n'existe pas et que, sauf si vous ne laisserez que l'exécutif qu'il est exécuté si son test renvoie un code de retour non nul.

7
Adam Henderson

Sur Linux et Puppet> 3.8 Essayez:

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

eXEC ne fonctionnera pas si /a/file.txt existe.

1
Felipe Alvarez

Vous voudrez peut-être envisager d'utiliser Crée , qui existe à cet effet:

exec { 'git add url':
  command => 'git remote add Origin https://github.com/testing/puppet.git',
  creates => '/usr/local/bin/papply'
}
0