Fichiers / modèles partagés entre livres de recettes


11

Nous avons plusieurs livres de cuisine qui référencent les mêmes fichiers et modèles et nous nous demandions s'il existe un moyen raisonnable de s'assurer que tous ces fichiers sont le même pour garantir qu'aucun ne soit obsolète. Est-il possible d'avoir un seul fichier / modèle référencé par plusieurs recettes / livres de recettes? J'ai pensé à utiliser des liens symboliques, mais cela ne fonctionnera pas pour nous car Git ne les prend pas en charge.

Réponses:


17

Les ressources cookbook_file et template prennent en charge un paramètre "cookbook" qui spécifie quel livre de recettes contient le fichier source. Ensuite, vous pouvez créer un livre de recettes «commun» où ces fichiers vivent comme une seule entité. Par exemple:

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

Supposons que vous ayez deux livres de recettes, chose1 et chose2, et qu'ils les utilisent tous les deux. Les recettes peuvent être:

# 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

Cependant, je demanderais pourquoi avez-vous une duplication entre différents types de fonctionnalités dans vos livres de cuisine? Autrement dit, ce genre de chose conviendrait-il à une ressource / fournisseur léger personnalisé que vous utilisez?


1
Merci pour l'exemple ainsi que l'autre solution. C'est parfait!
gdurham
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.