Jak jste sami řekli, doporučeným vzorem šéfkuchaře je spravovat celý soubor.
Pokud používáte Chef 11, pravděpodobně byste k tomu, čeho se snažíte dosáhnout, mohli použít dílčí části.
Zde a v této ukázkové kuchařce je více informací.
Pokud máte přístup k původní šabloně konfigurace, stačí připojit <%= render "original_config.erb" %>
na začátek vašeho parms_to_append.conf
šablony.
Jak již bylo řečeno, použití šablon a částí je běžný způsob, jak toho dosáhnout, ale šéfkuchař umožňuje připojování souborů a dokonce i změnu (úpravu) řádků souboru. Appendind se provádí pomocí následujících funkcí:
- insert_line_after_match(regulární výraz, nový řádek);
- insert_line_if_no_match(regulární výraz, nový řádek)
Můžete najít a příklad zde na stackoverflow a úplnou dokumentaci na rubydoc.info
Používejte jej prosím opatrně a pouze v případě, že části a šablony nejsou vhodné.
Udělal jsem něco takového:
monit_overwrites/templates/default/monitrc.erb:
#---FLOWDOCK-START
set mail-format { from: [email protected] }
#---FLOWDOCK-END
V mém receptu jsem udělal toto:
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