Freigegebene Dateien / Vorlagen zwischen Kochbüchern

11

Wir haben mehrere Kochbücher, die auf dieselben Dateien und Vorlagen verweisen, und haben uns gefragt, ob es einen vernünftigen Weg gibt, um sicherzustellen, dass alle diese Dateien dieselbe Datei sind, um sicherzustellen, dass keine veraltet sind. Ist es möglich, dass eine einzelne Datei / Vorlage von mehreren Rezepten / Kochbüchern referenziert wird? Ich habe über die Verwendung von Symlinks nachgedacht, dies wird jedoch bei uns nicht funktionieren, da Git sie nicht unterstützt.

gdurham
quelle

Antworten:

17

Die Ressourcen cookbook_file und template unterstützen einen "cookbook" -Parameter, der angibt, welches Kochbuch die Quelldatei enthält. Dann könnten Sie ein "Commons" -Kochbuch erstellen, in dem diese Dateien als eine Einheit leben. Beispielsweise:

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

Angenommen, Sie haben zwei Kochbücher, thing1 und thing2, und beide verwenden diese. Die Rezepte könnten sein:

# 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

Ich würde jedoch fragen, warum Sie in Ihren Kochbüchern Duplikationen zwischen verschiedenen Arten von Funktionen haben. Das heißt, wäre diese Art von Dingen für eine benutzerdefinierte, leichtgewichtige Ressource / einen benutzerdefinierten Anbieter geeignet, den Sie verwenden?

jtimberman
quelle
1
Vielen Dank für das Beispiel sowie die andere Lösung. Dies ist perfekt!
Gdurham