Verwenden eines Kochrezepts zum Anhängen mehrerer Zeilen an eine Konfigurationsdatei

Ich versuche ein Kochrezept zu erstellen, um mehrere Zeilen (20-30) an eine bestimmte Konfigurationsdatei anzuhängen.

Mir ist bewusst, dass das empfohlene Muster istÄndere ganze Konfigurationsdateien anstatt nur an eine Datei anzuhängen, aber ich mag diesen Ansatz aus mehreren Gründen nicht.

Bisher war die einzige Lösung, die ich gefunden habe, die Verwendung von acookbook_file Verwenden Sie anschließend eine Bash-Ressource, um Folgendes zu tun:

cat lines_to_append >> /path/configfile

Offensichtlich würde dies nicht richtig funktionieren, da die Datei jedes Mal, wenn Sie chef-client ausführen, immer wieder angehängt wird. Ich müsste ein kleines Bash-Skript erstellen, um zuerst nach einer bestimmten Zeichenfolge zu suchen.wenn nicht gefunden, an die Datei anhängen.

Dies scheint jedoch den Zweck der Verwendung von Chefkoch zu zunichte zu machen. Es muss einen besseren Weg geben.

Eine vielversprechende Lösung war dieLinie Kochbuch von der OpsCode Community. Es sollte genau dieses Problem lösen. Leider ist die Funktionalität unvollständig, fehlerhaft und der Code ist nur ein schneller Hack. Weit davon entfernt, eine solide Lösung zu sein.

Eine andere Option, die ich evaluierte, warAugeas. Scheint ziemlich mächtig, aber es würde dem System noch eine weitere Abstraktionsebene hinzufügen. Overkill, in meinem Fall.

Gibt es angesichts der Tatsache, dass dies eine der offensichtlichsten Aufgaben eines jeden Systemadministrators ist, eine einfache und schöne Lösung für den Chefkoch, die ich nicht sehe?

EDIT: So löse ich es bisher:

 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

Es funktioniert, aber nicht sicher, ob dies das empfohlene Kochmuster ist.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage