Mit einem Koch-Rezept zum Anhängen mehrerer Zeilen in eine config-Datei
Ich versuche zu schaffen, ein Koch Rezept zum Anhängen mehrerer Zeilen (20-30) auf eine bestimmte config-Datei.
Ich bin mir bewusst, dass das empfohlene Muster ist ändern der gesamten config-Dateien vielmehr als nur das Anhängen an eine Datei, aber ich mag diesen Ansatz aus mehreren Gründen.
Bisher die einzige Lösung, die ich fand war die Verwendung eines cookbook_file
und dann mit einem bash-Ressource zu tun:
cat lines_to_append >> /path/configfile
Offensichtlich würde dies nicht funktionieren, richtig, es würde Anhängen, die Datei immer und immer wieder, jedes mal, wenn Sie ausführen, chef-client. Ich würde erstellen Sie ein kleines bash-script prüfen, ob eine bestimmte Zeichenfolge erste, und, wenn nicht gefunden, anfügen an die Datei.
Aber dies scheint die Niederlage der Zweck der mit-Chef. Es muss einen besseren Weg geben.
Eine vielversprechende Lösung war die line-Kochbuch von OpsCode Gemeinschaft. Es trifft zu lösen genau dieses problem. Leider ist die Funktionalität ist unvollständig, fehlerhaft, und der code ist nur ein schneller hack. Weit davon entfernt, eine solide Lösung.
Andere option, die ich ausgewertet wurde augeas. Scheint ziemlich mächtig, aber es würde noch hinzufügen-eine weitere Ebene der Abstraktion auf das system. Übertrieben, in meinem Fall.
Gegeben, dass dies eine der offensichtlichsten Aufgaben für jeden sysadmin, gibt es eine einfache und schöne Lösung mit dem Chef, ich bin nicht zu sehen?
EDIT: hier ist, wie ich bin die Lösung die es so weit:
cookbook_file "/tmp/parms_to_append.conf" do
source "parms_to_append.conf"
end
bash "append_to_config" do
user "root"
code <<-EOF
cat /tmp/parms_to_append.conf >> /etc/config
rm /tmp/parms_to_append.conf
EOF
not_if "grep -q MY_IDENTIFIER /etc/config"
end
Funktioniert es, aber nicht sicher, ob dies ist die empfohlene Koch-Muster.
InformationsquelleAutor Gui Ambros | 2013-06-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
- Wie Sie selbst sagen, die empfohlene Koch-Muster ist die Bearbeitung der ganzen Datei.
Wenn Sie mit Küchenchef 11 wahrscheinlich könnten Sie machen verwenden der Teiltöne für das, was Sie zu erreichen versuchen.
Gibt ' s mehr info hier und auf dieser Beispiel Kochbuch.
Solange Sie Zugriff auf die original-config-Vorlage, fügen Sie einfach
<%= render "original_config.erb" %>
an die Spitze derparms_to_append.conf
Vorlage.InformationsquelleAutor cassianoleal
Wie gesagt, mit Vorlagen und partials ist der übliche Weg, dies zu tun, aber chef erlaubt das Anhängen von Dateien und sogar verändern(editieren) die Datei Linien. Appendind erfolgt mit folgenden Funktionen:
Können Sie finden und Beispiel hier auf stackoverflow, und die vollständige Dokumentation auf rubydoc.info
Bitte verwenden Sie es mit Vorsicht, und nur, wenn partials und templates sind nicht geeignet.
InformationsquelleAutor Konzula
Habe ich so etwas wie dieses:
monit_overwrites/templates/default/monitrc.erb:
In meinem Rezept habe ich dieses:
monit_overwrites/recipes/default.rb:
InformationsquelleAutor Kasper Grubbe
Der einfachste Weg, um diese Situation zu bewältigen wäre, um eine Zeichenfolge erstellen und übergeben es an den Inhalt. Natürlich bash-Blöcke arbeiten... aber ich denke, die Datei-Ressourcen sind elegant.
InformationsquelleAutor ABCD