Puppet wird nur ausgeführt, wenn die Datei NICHT vorhanden ist

11

Ich möchte den folgenden Befehl nur ausführen, wenn die Datei (/ usr / local / bin / papply) nicht vorhanden ist. Ich bin mir nicht sicher, was ich dort hinstellen soll.

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

Antworten:

22

Hast du das versucht?

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

Ich bin mir nicht sicher, ob Puppet das '!' Charakter

Vielleicht eine bessere Alternative:

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

Auch wenn mir die Tatsache nicht gefällt, dass der Befehl die Datei nicht wirklich erstellt

sebastien.prudhomme
quelle
funktioniert nicht, habe diese Fehlermeldung erhalten. Konnte nicht auswerten: Befehl '!' Konnte nicht gefunden werden
Qinking126
Und das: onlyif => "test! -F / usr / local / bin / papply"
sebastien.prudhomme
create => '/ usr / local / bin / papply' funktioniert, danke. Lassen Sie mich Ihre Updates testen, um zu sehen, ob dies funktioniert.
Qinking126
1
onlyif => "test! -f / usr / local / bin / papply" funktioniert, auch das, das ich am liebsten benutze. Danke.
Qinking126
7

Wenn Sie unter Linux sind, tun Sie es einfach

unless => 'ls /somefile'

ls wird mit einem Rückkehrcode ungleich Null zurückgegeben, wenn die Datei nicht vorhanden ist, und es sei denn, die ausführende Datei wird nur ausgeführt, wenn ihr Test einen Rückkehrcode ungleich Null zurückgibt.

Adam Henderson
quelle
1

Unter Linux und Puppet> 3.8 versuchen Sie:

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

exec wird nicht ausgeführt, wenn /a/file.txtvorhanden.

Felipe Alvarez
quelle
0

Möglicherweise möchten Sie die Verwendung von create in Betracht ziehen , die zu diesem Zweck vorhanden ist:

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