Ресурсы cookbook_file и template поддерживают параметр «cookbook», который указывает, какая поваренная книга содержит исходный файл. Затем вы можете создать «общую книгу», где эти файлы живут как единое целое. Например:
% cookbooks/commons
cookbooks/commons
|-- files
| `-- default
| `-- master.conf
`-- templates
`-- default
`-- general.conf.erb
Предположим, у вас есть две кулинарные книги thing1 и thing2, и обе они используют их. Рецепты могут быть:
# thing1/recipes/default.rb
cookbook_file "/etc/thing1/master.conf" do
source "master.conf"
cookbook "commons"
end
template "/etc/thing1/general.conf" do
source "general.conf.erb"
cookbook "commons"
end
# thing2/recipes/default.rb
cookbook_file "/etc/thing2/like_master_but_different.conf" do
source "master.conf"
cookbook "commons"
end
template "/etc/thing2/not_as_general_as_you_think.conf" do
source "general.conf.erb"
cookbook "commons"
end
Тем не менее, я хотел бы спросить, почему у вас есть дублирование между различными видами функций в ваших кулинарных книгах? То есть, подойдут ли такие вещи для настраиваемого облегченного ресурса / провайдера, которого вы используете?