Puppentest, ob eine Datei vorhanden ist


8

Ich suche nach einer Möglichkeit zu testen, ob eine Datei in meinem Client vorhanden ist (nur testen, nicht erstellen). Ich habe den Weg (File.exists) in Chef gefunden, aber das war mit Marionette nicht einfach.

Danke im Voraus.

Antworten:


6

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',
}

Ja. Das ist großartig mit der neuen Version der Puppe. Ich habe mit Pre 2.6.0 gearbeitet und muss meine eigene Ruby-Funktion für die Datei exist / empty check schreiben.
Mahlzeit

9

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 
}

Stellen Sie sicher, dass>> vorhanden die Datei erstellt, wenn sie nicht vorhanden ist. bazic will es nur testen und nicht erstellen. Siehe docs: docs.puppetlabs.com/references/stable/type.html#file
shakalandy

Danke, aber nichts Interessantes in der Dokumentation.
Bazic

Ich habe meine Antwort aktualisiert
MealstroM

1
@MealstroM: Wäre " creates => '/etc/blabla'" nicht besser als ein " onlyif"?
Freiheit

1
@MealstroM: In diesem speziellen Fall createshätte das gleiche Ergebnis und wäre viel einfacher (und ein bisschen schneller). Ja, bietet im Allgemeinen onlyifmehr Flexibilität.
Freiheit
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.