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

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


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.


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.


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'
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.