Ich verwende remote_file in einer for-Schleife, um Deployment-Dateien zu durchlaufen (angegeben in Knotenattributen). Ich überprüfe die gegebene Prüfsumme (sha256sum), um zu sehen, ob bereits existierende Dateien gleich sind oder nicht; wenn nicht, aktualisiere ich sie; Wenn es gleich ist, wird einfach übersprungen.So erkennen Sie eine Dateiaktualisierung, wenn Sie remote_file verwenden
Ich muss in dem Rezept wissen, ob eine Datei aktualisiert wurde oder nicht, so dass ich App-Server neu starten, falls eine Datei im Bereitstellungsverzeichnis geändert wird.
Gibt es ein Standardattribut, das ich verwenden kann (was sagt, dass alle Dateiupdates übersprungen wurden) oder alternativ, was ist der beste Ansatz dafür?
Danke,
node['app']['deployments'].each do |file, value|
remote_file "/apps/deployments/#{value['file-name']}" do
source "file:///tmp/deployments/#{value['file-name']}"
checksum value['check-sum']
end
end
Danke, aber ich muss wissen, ob eine Datei aktualisiert wurde oder nicht und nur neu starten, wenn eine der Dateien aktualisiert wurde – hamdani
Chef wird das automatisch tun. Wenn keine Datei aktualisiert wird, wird die Ressource 'service' niemals benachrichtigt. Wenn alle Dateien aktualisiert wurden, werden sie mehrmals benachrichtigt, aber am Ende nur einmal neu gestartet. – StephenKing
Mit anderen Worten: Benachrichtigungen werden nur ausgelöst, wenn die Ressource aktualisiert wird (in Ihrem Fall ändert sich die Datei). – StephenKing