Общие файлы / шаблоны между кулинарными книгами

11

У нас есть несколько кулинарных книг, которые ссылаются на одни и те же файлы и шаблоны, и нам было интересно, есть ли разумный способ убедиться, что все они представляют собой один и тот же файл, чтобы ни одна из них не устарела. Можно ли иметь один файл / шаблон, на который ссылаются несколько рецептов / кулинарных книг? Я думал об использовании символических ссылок, однако это не будет работать для нас, так как Git не поддерживает их.

gdurham
источник

Ответы:

17

Ресурсы 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

Тем не менее, я хотел бы спросить, почему у вас есть дублирование между различными видами функций в ваших кулинарных книгах? То есть, подойдут ли такие вещи для настраиваемого облегченного ресурса / провайдера, которого вы используете?

jtimberman
источник
1
Спасибо за пример, а также за другое решение. Это потрясающе!
gdurham