Wie Sie selbst sagten, besteht das empfohlene Chef-Muster darin, die gesamte Datei zu verwalten.
Wenn Sie Chef 11 verwenden, können Sie für das, was Sie erreichen möchten, wahrscheinlich Teilsätze verwenden.
Weitere Informationen finden Sie hier und in diesem Beispiel-Kochbuch.
Solange Sie Zugriff auf die ursprüngliche Konfigurationsvorlage haben, hängen Sie einfach <%= render "original_config.erb" %>
an an den Anfang Ihres parms_to_append.conf
Vorlage.
Wie bereits erwähnt, ist die Verwendung von Vorlagen und Partials eine gängige Methode, aber Chef erlaubt das Anhängen von Dateien und sogar das Ändern (Bearbeiten) von Dateizeilen. Anhängen wird mit folgenden Funktionen durchgeführt:
- insert_line_after_match(Regex, Zeilenumbruch);
- insert_line_if_no_match(Regex, Zeilenumbruch)
Sie finden ein Beispiel hier auf stackoverflow und die vollständige Dokumentation auf rubydoc.info
Bitte verwenden Sie es mit Vorsicht und nur, wenn Partials und Templates nicht geeignet sind.
Ich habe so etwas gemacht:
monit_overwrites/templates/default/monitrc.erb:
#---FLOWDOCK-START
set mail-format { from: [email protected] }
#---FLOWDOCK-END
In meinem Rezept habe ich folgendes gemacht:
monit_overwrites/recipes/default.rb:
execute "Clean up monitrc from earlier runs" do
user "root"
command "sed '/#---FLOWDOCK-START/,/#---FLOWDOCK-END/d' > /etc/monitrc"
end
template "/tmp/monitrc_append.conf" do
source "monitrc_append.erb"
end
execute "Setup monit to push notifications into flowdock" do
user "root"
command "cat /tmp/monitrc_append.conf >> /etc/monitrc"
end
execute "Remove monitrc_append" do
command "rm /tmp/monitrc_append.conf"
end