Como tú mismo dijiste, el patrón Chef recomendado es administrar todo el archivo.
Si está usando Chef 11, probablemente podría usar parciales para lo que está tratando de lograr.
Hay más información aquí y en este libro de cocina de ejemplo.
Siempre que tenga acceso a la plantilla de configuración original, simplemente agregue <%= render "original_config.erb" %>
en la parte superior de tu parms_to_append.conf
plantilla.
Como se dijo antes, el uso de plantillas y parciales es una forma común de hacer esto, pero Chef permite agregar archivos e incluso cambiar (editar) líneas de archivo. La adición se realiza usando las siguientes funciones:
- insert_line_after_match(regex, newline);
- insertar_línea_si_no_coincide(regex, nueva línea)
Puede encontrar un ejemplo aquí en stackoverflow y la documentación completa en rubydoc.info
Úselo con precaución y solo cuando los parciales y las plantillas no sean apropiados.
Hice algo como esto:
monit_overwrites/templates/default/monitrc.erb:
#---FLOWDOCK-START
set mail-format { from: example@unixlinux.online }
#---FLOWDOCK-END
En mi receta hice esto:
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