puppet exec solo quando il file NON esiste


11

Voglio eseguire il seguente comando solo quando il file (/ usr / local / bin / papply) non esiste. non sono sicuro di cosa mettere lì.

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

Risposte:


22

Hai provato questo?

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

Non sono sicuro che Puppet possa usare "!" personaggio

Forse una migliore alternativa:

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

anche se non mi piace il fatto che il comando non crei davvero il file


non funziona, ho ricevuto questo messaggio di errore. Impossibile valutare: impossibile trovare il comando '!'
qinking126

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

crea => '/ usr / local / bin / papply' funziona, grazie. fammi testare i tuoi aggiornamenti, vedere se htat one funziona.
qinking126

1
onlyif => "test! -f / usr / local / bin / papply" funziona, anche quello che preferisco usare. grazie.
qinking126

7

Se sei su Linux, fallo e basta

unless => 'ls /somefile'

Restituirà con un codice di ritorno diverso da zero se il file non esiste e, a meno che non consenta all'esecutivo solo di essere eseguito, se il suo test restituisce un codice di ritorno diverso da zero.


1

Su Linux e Puppet> 3.8 prova:

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

exec non funzionerà se /a/file.txtesiste.


0

Potresti voler considerare l'utilizzo di create , che esiste a questo scopo:

exec { 'git add url':
  command => 'git remote add origin https://github.com/testing/puppet.git',
  creates => '/usr/local/bin/papply'
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.