nginx vagrant chef-recipe chef-solo

nginx - "Include_recipe" vs. Vagrantfile "chef.add_recipe". ¿Cual es la diferencia?



chef-recipe chef-solo (1)

¡Te tengo! Función Chef 11 Problema con él existe en chef-solo únicamente :)

Para hacer un currículum rápido, la diferencia es:

  • chef.add_recipe () - carga todo el contexto del libro de cocina (todos los archivos, por ejemplo, recetas, definiciones, atributos ...)
  • include_recipe "" - no se cargan los archivos (atributos, definiciones, etc.) que no están en la lista de ejecución gastada.

Hay al menos 4 formas de resolver el problema (poner los archivos en la lista de ejecución):

  • include_attribute: incluye el archivo de atributo deseado explícitamente.
  • metadata.rb-> dependency: si su libro de cocina está usando la receta de otro libro de cocina, coloque ese libro de cocina en la sección de dependencia de metadata.rb y se cargarán todos sus archivos.
  • chef.add_recipe () - Cargar receta a través de Vagrantfile. (Mencionado aquí solo para referencia)
  • Berkshelf: puede usar este administrador de libros de cocina para resolver el problema también. Aquí está el hilo de Stackoverflow sobre este problema exacto y algunos documentos.

Para aquellos que estén interesados ​​en seguir leyendo, Chef 11 introdujo la carga de libros de recetas basada en la dependencia para archivos que no son de recetas. La nueva lógica de carga significa que los archivos que pertenecen a los libros de cocina que existen en cookbook_path pero que no están en la lista de ejecución ampliada o las dependencias de los libros de cocina en la lista de ejecución expandida ya no se cargarán. REF: Opscode rompe la documentación de cambios , y si necesita una firma del error que obtuve, aquí está exactamente el mismo, incluso por la misma causa.

Simplemente ejecuté la receta nginx :: source en mi caja vagabunda, y tengo un comportamiento muy inusual.

Cuando incluyo una receta del Vagrantfile (como se muestra a continuación), todo funciona como un amuleto,

chef.add_recipe ("project :: nginx")
chef.add_recipe ("nginx :: fuente")

( project :: nginx recipe es muy simple. Usarlo para anular los atributos predeterminados del libro de cocina nginx)

pero si incluyo una receta al final del proyecto :: nginx (mencionado arriba), todo se desmorona:

node.default[''nginx''][''server_names_hash_bucket_size''] = 128 include_recipe "nginx::source"

Hasta ahora no sabía que hubiera alguna diferencia en el comportamiento entre esas dos invocaciones. ¿Alguien aquí sabe cuál es la diferencia?