sous software pelicula famosos english cocina chefs automate chef

software - chefs famosos



Especificar qué libros de cocina se ejecutarán con Chef Solo (5)

Lamentablemente, no creo que haya. Chef se ejecuta en un modo de dos pasadas: primero, analiza y construye un modelo de sus libros de cocina (la fase de "compilación"), y luego ejecuta solo aquellos libros de cocina que especifique en la lista de ejecución. Creo que lo hace para asegurarse de que atrapa las dependencias entre los libros de cocina en la fase de compilación. La fase de compilación debe ser consistente o, de lo contrario, se produce un error.

Para entender realmente esto, mira el recurso de ruby block . Cualquier rubí que esté flotando en tus recetas será evaluado en tiempo de compilación ; cualquier ruby ​​que desee ejecutar en el momento de la evaluación debe colocarse en un recurso de ruby ​​block. Una vez que lo asimilas, la naturaleza de la evaluación de dos pasos se hace evidente.

Creo que sus únicas opciones son traer sus libros de cocina uno a la vez, como lo está haciendo, o corregir sus atributos.

Estoy usando chef-solo para probar mis libros de cocina localmente, pero quiero poder ejecutar solo los libros de cocina que estoy probando. Actualmente, parece que chef-solo ejecutará todos los libros de cocina en el directorio de libros de cocina especificado en solo.rb. He especificado la lista de ejecución en el archivo de atributos de json y he especificado la ubicación del archivo de json en solo.rb, pero eso no parece ayudar. Al menos analiza los atributos de todos los otros libros de cocina, porque tengo uno que no funciona para mi configuración local y falla en toda la ejecución.

La mejor solución que he encontrado hasta ahora es mover los libros de cocina que necesito para probar a un directorio diferente y especificarlos en solo.rb. Hay una mejor manera de hacerlo?



También vale la pena señalar que al realizar pruebas, puede anular fácilmente la lista de ejecución

chef-solo --override-runlist "role["somerole"],recipe[mycookbook::recipe]"



Actualización : chef-solo ya no es una herramienta "separada" de chef-cliente. De la documentation :

chef-solo es un comando que ejecuta chef-cliente de una manera que no requiere el servidor Chef para que converjan los libros de cocina. chef-solo utiliza el modo local de chef-cliente, y no admite la siguiente funcionalidad presente en las configuraciones de chef-cliente / servidor

Este cambio se implementó en la versión 12.11 de Chef , que cumple con la comunidad RFC . Esto se lanzó el 8 de junio de 2016. El comportamiento anterior, que se describe a continuación (aunque desde hace 4 años en este momento), está disponible con el argumento --legacy-mode to chef-solo .

Para obtener la información más actualizada y actualizada sobre Chef Solo, lea documentation

Mi respuesta original es a continuación:

Chef (cliente individual o individual) no "ejecuta" todos los libros de cocina.

Carga todos los archivos de Ruby del libro de cocina en los siguientes directorios, en este orden:

  • bibliotecas / * .rb
  • proveedores / * .rb
  • recursos / * .rb
  • atributos / * .rb
  • definiciones / * .rb

Luego, carga todas las recetas que están en la lista de ejecución expandida del nodo. Con chef-solo , esto proviene de un archivo JSON suministrado con -j , o se puede hacer en archivos de atributos; sin embargo, este último está obsoleto y no se recomienda.

También se cargan las recetas que están incluidas por aquellos en la lista de ejecución expandida mediante include_recipe Chef carga las recetas evaluándolas como código Ruby. Cuando encuentra el código ruby ​​que reconoce como un recurso, o una definición, agrega el recurso a la Colección de recursos, que es un hash indexado numéricamente ordenado de todos los recursos. Las definiciones son especiales, ya que Chef agrega los recursos que contienen, no la definición en sí, a la Colección de recursos. Los recursos de las recetas incluidas a través de include_recipe se insertan en su lugar, luego el Chef continúa en la receta incluida.

Una vez que Chef ha procesado todas las recetas para todos sus recursos, recorre la colección de recursos realizando la acción especificada en cada uno en el orden en que se agregó a la colección.

Recomiendo leer la documentación sobre este proceso. Se aplica a Chef Solo; solo se omite la parte donde se descargan los libros de cocina del servidor.

Para asegurarse de que solo se prueban las recetas que desea probar, inclúyalas en la lista de ejecución del nodo a través de un archivo JSON. Se parece a esto:

{ "run_list": ["recipe[mything]", "recipe[anotherthing]"] }

La lista de ejecución es solo una matriz, y los elementos pueden ser recipe[cookbookname] o role[somerole] . Puede leer más sobre cómo usar roles con Chef Solo en la documentación de Chef Solo.

Si tiene cambios en el sistema cuando Chef está cargando los componentes del libro de cocina (los archivos de ruby ​​en cada libro de cocina), entonces "lo está haciendo mal" (tm) y debe refactorizar las cosas que deben hacerse en un recurso llamado de una receta .