il burattino esegue solo quando il file NON esiste

Voglio solo eseguire il command seguente quando il file (/ usr / local / bin / papply) non esiste. non so cosa posso fare.

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

  • Fornitore di pacchetti per moduli da puppetforge?
  • Come aggiungere un file alle home directory di tutti gli utenti esistenti e futuri
  • PuppetDB: incapace di get il certificato locale dell'emittente
  • Veewee, Vagrant, Puppet, Erlang e RabbitMQ
  • servizio fantoccio non interrompere il servizio
  • Puppet: best practices pratiche variables
  • 4 Solutions collect form web for “il burattino esegue solo quando il file NON esiste”

    Hai provato questo?

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

    Non è sicuro se il burattino possa utilizzare il '!' carattere

    Forse un migliore alternativo:

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

    anche se non mi piace il fatto che il command non crea veramente il file

    Se sei in linux, fai semplicemente

     unless => 'ls /somefile' 

    ls restituirà con un codice di return non zero se il file non esiste e se non si lascia che l'exec sia sotto eseguito se il suo test restituisce un codice di return non zero.

    Su linux e puppet> 3.8 prova:

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

    exec non verrà eseguito se esiste /a/file.txt .

    Potresti voler considerare l'utilizzo di creazioni che esistono a questo scopo:

     exec { 'git add url': command => 'git remote add origin https://github.com/testing/puppet.git', creates => '/usr/local/bin/papply' } 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.