Antworten:
Der "native" Weg, dies ohne Execs zu tun, wenn Sie mit Puppet 2.6.6+ arbeiten:
file { '/path/to/myfile':
ensure => 'present',
audit => 'all',
}
(Diese Funktionalität gibt es seit Puppet 2.6.0, aber es gab eine Reihe von Problemen bei der Überwachung, die erst mit der Version 2.6.6 wirklich behoben wurden.)
Wenn Sie eine ältere Version verwenden, können Sie der Ressource auch mitteilen, dass sie im noopModus ausgeführt werden soll. Dabei wird nur eine Meldung angezeigt, wenn Puppet ausgeführt wird und die Datei nicht vorhanden ist:
file { '/path/to/myfile':
ensure => 'present',
noop => 'true',
}
Sie sollten Ihre eigene Funktion erstellen oder exec mit dem Befehl onlyif verwenden. etwas wie :
exec { "mycommand":
path => "/usr/bin:/usr/sbin:/bin",
onlyif => "test -f /etc/blalba" //yours command
}
creates => '/etc/blabla'" nicht besser als ein " onlyif"?
createshätte das gleiche Ergebnis und wäre viel einfacher (und ein bisschen schneller). Ja, bietet im Allgemeinen onlyifmehr Flexibilität.