Come hai detto tu stesso, il modello consigliato da Chef è quello di gestire l'intero file.
Se stai usando Chef 11 potresti probabilmente usare i partial per quello che stai cercando di ottenere.
Ci sono più informazioni qui e su questo libro di cucina di esempio.
Finché hai accesso al modello di configurazione originale, aggiungi semplicemente <%= render "original_config.erb" %>
in cima al tuo parms_to_append.conf
modello.
Come detto prima, l'utilizzo di modelli e parziali è un modo comune per farlo, ma chef consente di aggiungere file e persino di modificare (modificare) le righe di file. Appendend viene eseguito utilizzando le seguenti funzioni:
- insert_line_after_match(regex, newline);
- insert_line_if_no_match(regex, newline)
Puoi trovare un esempio qui su StackOverflow e la documentazione completa su rubydoc.info
Si prega di usarlo con cautela e solo quando partial e template non sono appropriati.
Ho fatto qualcosa del genere:
monit_overwrites/templates/default/monitrc.erb:
#---FLOWDOCK-START
set mail-format { from: [email protected] }
#---FLOWDOCK-END
Nella mia ricetta ho fatto questo:
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