Comme vous l'avez dit vous-même, le modèle Chef recommandé consiste à gérer l'ensemble du dossier.
Si vous utilisez Chef 11, vous pourriez probablement utiliser des partiels pour ce que vous essayez d'accomplir.
Il y a plus d'informations ici et sur cet exemple de livre de cuisine.
Tant que vous avez accès au modèle de configuration d'origine, ajoutez simplement <%= render "original_config.erb" %>
en haut de votre parms_to_append.conf
modèle.
Comme indiqué précédemment, l'utilisation de modèles et de partiels est une manière courante de procéder, mais chef permet d'ajouter des fichiers et même de modifier (éditer) des lignes de fichiers. L'ajout est effectué à l'aide des fonctions suivantes :
- insert_line_after_match(regex, nouvelle ligne) ;
- insert_line_if_no_match(regex, newline)
Vous pouvez trouver un exemple ici sur stackoverflow, et la documentation complète sur rubydoc.info
Veuillez l'utiliser avec prudence et uniquement lorsque les partiels et les modèles ne sont pas appropriés.
J'ai fait quelque chose comme ça :
monit_overwrites/templates/default/monitrc.erb :
#---FLOWDOCK-START
set mail-format { from: [email protected] }
#---FLOWDOCK-END
Dans ma recette, j'ai fait ceci :
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