GNU/Linux >> Linux の 問題 >  >> Linux

Chef レシピを使用して構成ファイルに複数の行を追加する

おっしゃる通り、推奨される Chef パターンはファイル全体を管理することです。

Chef 11 を使用している場合は、達成しようとしていることにおそらくパーシャルを利用できます。

詳細については、こちらとこのサンプル クックブックをご覧ください。

元の構成テンプレートにアクセスできる限り、 <%= render "original_config.erb" %> を追加するだけです parms_to_append.conf の先頭に テンプレート。


前述のように、テンプレートとパーシャルを使用するのが一般的な方法ですが、chef ではファイルを追加したり、ファイル行を変更 (編集) することもできます。 Appendind は、次の関数を使用して実行されます:

  • insert_line_after_match(正規表現、改行);
  • insert_line_if_no_match(正規表現、改行)

ここでスタックオーバーフローの例を見つけて、rubydoc.info の完全なドキュメントを参照してください。

パーシャルとテンプレートが適切でない場合にのみ、注意して使用してください。


私はこのようなことをしました:

monit_overwrites/templates/default/monitrc.erb:

#---FLOWDOCK-START
set mail-format { from: [email protected] }
#---FLOWDOCK-END

私のレシピでは、これを行いました:

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. Linuxシェルスクリプトを使用してパターンが一致した後、ファイルに複数行のデータを挿入します

  2. Sedを使用してテキストファイルから複数のランダム行を削除する方法は?

  3. gnu cp コマンドを使用して複数のディレクトリにファイルをコピーする方法

  1. 複数行をカンマ区切りの 1 行にする

  2. 複数のファイルの内容を 1 つのファイルに追加する方法

  3. LinuxでO_APPENDモードで開くを使用して、Cでファイルに追加する方法は?

  1. シェルスクリプトを使用して、指定されたパターンの後にファイルに複数の行を挿入します

  2. Linux 設定ファイルの複数行をコメントアウトするには?

  3. sedを使用して、ファイル内の行の範囲内のテキストを検索して置換します