おっしゃる通り、推奨される 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
シグナルハンドラでprintfを使用しないようにするには?
/var/run/renderd/renderd.sock のソケット バインドが失敗したというエラーが表示されます。通常のユーザーの場合、それ以外の場合はすべて正常に動作しますか?