GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden eines Chef-Rezepts zum Anhängen mehrerer Zeilen an eine Konfigurationsdatei

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

Linux
  1. Fügen Sie nach Musterübereinstimmungen mithilfe von Linux-Shell-Skript mehrere Datenzeilen in eine Datei ein

  2. Wie lösche ich mehrere zufällige Zeilen aus einer Textdatei mit Sed?

  3. Mehrere Zeilen in eine durch Komma getrennte Zeile umwandeln

  4. Herunterladen einer Datei mit wget über mehrere Verbindungen

  5. Wie wähle ich mehrere Zeilen aus einer Datei oder aus einer Pipe in einem Skript aus?

Verwenden der SSH-Konfigurationsdatei

So verbinden Sie mehrere Zeilen in einer Datei in Linux zu einer

So entfernen Sie Zeilen aus einer Datei mit dem Sed-Befehl

So kommentieren Sie mehrere Zeilen gleichzeitig im vim-Editor mit 3 Methoden

Suchen und ersetzen Sie Text in einer Datei zwischen einem Zeilenbereich mit sed

Wie lade ich die tmux-Konfigurationsdatei neu, die mehrere Sitzungen definiert hat?