ruby - Writing file with multiple Chef cookbooks all targeting the same file -
i have situation have 3 cookbooks, each template resource writes /etc/hosts file.
rather overwriting, append:
- the first cookbook creates /etc/hosts file , writes lines 1,2,3.
 - the second cookbook appends lines 4,5. etc.
 
what's right way handle in chef land?
you should better create cookbook managing file generate attributes.
cookbooka/attributes/default.rb
default['hosts']['lines'] = []   cookbooka/recipes/genfile.rb
template "/etc/hosts"   source "hosts.erb" end   cookbooka/templates/default/hosts.erb
#file generated chef <% node['hosts']['lines'].each |l| %> <% l -%> <% end.unless node['hosts']['lines'].empty? %>   and in other cookbooks attributes files:
default['hosts']['lines'] << ["first line","second line"]   and have thoose cookbooks depends on cookbooka , in recipe call include_recipe "cookbooka::genfile.rb"
using << append attribute instead of overwriting them.
Comments
Post a Comment