Udostępnione pliki / szablony między książkami kucharskimi

11

Mamy wiele książek kucharskich, które odwołują się do tych samych plików i szablonów i zastanawialiśmy się, czy istnieje rozsądny sposób, aby upewnić się, że wszystkie są tym samym plikiem, aby żaden z nich nie był nieaktualny. Czy można mieć jeden plik / szablon, do którego odwołują się liczne przepisy / książki kucharskie? Myślałem o użyciu dowiązań symbolicznych, jednak nie będzie to dla nas działać, ponieważ Git ich nie obsługuje.

gdurham
źródło

Odpowiedzi:

17

Plik cookbook_file i zasoby szablonu obsługują parametr „cookbook”, który określa, która książka kucharska zawiera plik źródłowy. Następnie można utworzyć książkę kucharską „commons”, w której pliki te będą istnieć jako jedna całość. Na przykład:

% cookbooks/commons
cookbooks/commons
|-- files
|   `-- default
|       `-- master.conf
`-- templates
    `-- default
        `-- general.conf.erb

Załóżmy, że masz dwie książki kucharskie, rzecz 1 i rzecz 2, i obie z nich korzystają. Przepisy mogą być:

# 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

Chciałbym jednak zapytać, dlaczego w swoich książkach kucharskich występuje dublowanie różnych funkcji? Czy to byłoby odpowiednie dla niestandardowego, lekkiego zasobu / dostawcy, którego używasz?

jtimberman
źródło
1
Dziękuję za przykład, jak również za inne rozwiązanie. To jest doskonałe!
gdurham,