Ich versuche ein Chef-Rezept zu erstellen, um mehrere Zeilen (20-30) an eine bestimmte Konfigurationsdatei anzuhängen.Verwenden eines Chef-Rezepts zum Anhängen mehrerer Zeilen an eine Konfigurationsdatei
Ich bin mir bewusst, das empfohlene Muster ist change entire config files anstatt nur an eine Datei anhängen, aber ich mag diesen Ansatz aus mehreren Gründen nicht.
Bisher ist die einzige Lösung, die ich hatte einen verwenden cookbook_file
und dann ein Bash-Ressource zu tun verwenden:
cat lines_to_append >> /path/configfile
Offensichtlich würde dies nicht richtig funktionieren, da es die Datei anhängen würde über und jedes Mal, wenn Sie einen Koch-Client betreiben. Ich müsste ein kleines Bash-Skript erstellen, um zuerst nach einer bestimmten Zeichenfolge zu suchen, und, , falls nicht gefunden, an die Datei anhängen.
Aber dies scheint den Zweck der Verwendung von Chef zu besiegen. Es muss einen besseren Weg geben. Eine vielversprechende Lösung war die line cookbook von OpsCode Community. Es zielte darauf ab, dieses genaue Problem zu 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 bewertete, war augeas. Scheint ziemlich mächtig, aber es würde dem System noch eine weitere Abstraktionsebene hinzufügen. Overkill, in meinem Fall.
Da dies eine der offensichtlichsten Aufgaben für jeden Systemadministrator ist, gibt es eine einfache und schöne Lösung mit Chef, die ich nicht sehe?
EDIT: Hier ist, wie ich es so weit bin Lösung:
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, dies ist die empfohlene Chef Muster.