Archivos / plantillas compartidas entre libros de cocina

11

Tenemos varios libros de cocina que hacen referencia a los mismos archivos y plantillas y nos preguntamos si hay una manera razonable de garantizar que todos estos sean el mismo archivo para garantizar que ninguno quede desactualizado. ¿Es posible tener un solo archivo / plantilla referenciada por múltiples recetas / libros de cocina? Pensé en usar enlaces simbólicos, sin embargo, esto no funcionará para nosotros ya que Git no los admite.

gdurham
fuente

Respuestas:

17

Los recursos de plantilla y archivo de libro de cocina admiten un parámetro de "libro de cocina" que especifica qué libro de cocina contiene el archivo fuente. Luego, podría crear un libro de cocina "commons" donde esos archivos viven como una sola entidad. Por ejemplo:

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

Supongamos que tiene dos libros de cocina, thing1 y thing2, y ambos los usan. Las recetas pueden ser:

# 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

Sin embargo, me preguntaría por qué tiene duplicación entre diferentes tipos de funcionalidad en sus libros de cocina. Es decir, ¿sería este tipo de cosas adecuado para un recurso / proveedor ligero personalizado que utiliza?

jtimberman
fuente
1
Gracias por el ejemplo y por la otra solución. ¡Esto es perfecto!
gdurham