Ich verwende einen Befehl exec, um ein Shell-Skript auszuführen, das bestimmte Konfigurationsdateien anderer Pakete ändert. Der Befehl exec wird immer dann ausgelöst, wenn sich Eingabeparameter wie IP-Adressen, Ports oder URLs ändern oder wenn das Shell-Skript selbst geändert wurde.
Ich muss ein Shell-Skript verwenden, da sich die Konfigurationsdateien des Softwarepakets zwischen den Versionen geringfügig unterscheiden. Ich denke, es ist einfacher, die Konfigurationsdatei per sed-Skript zu aktualisieren, als unterschiedliche Puppenvorlagen für jede bestimmte Version bereitzustellen.
Diese Konfiguration erkennt jedoch nicht, wenn eine der Konfigurationsdateien außerhalb von Puppet geändert wurde. Puppet kennt die Dateien nicht, die vom Shell-Skript geändert wurden.
Was ich suche, ist eine Möglichkeit, den Befehl exec von den Prüfsummen beliebiger anderer Dateien abhängig zu machen:
exec { "my_command.sh":
only_if_file_has_changed => [
"/etc/mysoftware/config.xml",
"/etc/othersoftware/defaults",
]
}
Ist das möglich? Bitte beraten.
Antworten:
Es würde so funktionieren:
Die offensichtliche Einschränkung hierbei ist, dass die Dateien
/etc/mysoftware/config.xml
und/etc/othersoftware/defaults
auch über Puppet geändert werden müssen.Wenn sie durch etwas anderes (außerhalb von Puppet) verändert werden, siehe Felix 'Antwort.
Sie können
Package['xxx']
natürlich auch eine andere passende Abhängigkeit abonnieren .quelle
Puppet kann dies durch seinen Audit- Metaparameter lösen .
quelle