Frage
Ich habe ein Kochbuch, das Nginx installiert und eine benutzerdefinierte nginx.conf-Datei installiert.Es ist im Grunde das gleiche Kochbuch auf Opscode und verwendet „cookbook_file“, um die Datei zu installieren.
Wenn ich eine Änderung an der conf-Datei vornehme und dann das Kochbuch mit chef erneut ausführe, wird die Konfigurationsdatei nicht aktualisiert.Das scheint ein Fehler zu sein – mache ich etwas falsch?
Lösung
Bei Chef ist die Reihenfolge der Befehle im Rezept die Reihenfolge der Ausführung.wenn du das behalten hast template
für die nginx.conf
und es kommt nach dir cookbook_file
Befehl, die generierte Vorlage überschreibt Ihre Datei.
z.B.
# cookbook file
cookbook_file "#{node[:nginx][:dir]}/nginx.conf" do
source "my_nginx.conf"
mode 0644
owner "root"
group "root"
end
# template
template "nginx.conf" do
path "#{node[:nginx][:dir]}/nginx.conf"
source "nginx.conf.erb"
owner "root"
group "root"
mode 0644
notifies :reload, "service[nginx]"
end
Der template
würde die von festgelegte Datei überschreiben cookbook_file
.
Andere Tipps
Beim Testen habe ich festgestellt, dass dies der Fall ist :create_if_missing
Wenn Sie diese Option festlegen, wird die Datei nicht aktualisiert, wenn sich der Inhalt geändert hat.Satz :create
und das wird es.