Pregunta

He creado un libro de cocina de chef, que tiene muchas dependencias con otros libros de cocina.Mi principal problema ahora es que las recetas de otros libros de cocina se ejecutan en el orden aleatorio.Si especifico la ejecución de estas recetas en el archivo Vagrant como:

chef.add_recipe "gitlab::core_prereq"
chef.add_recipe "postfix"
chef.add_recipe "gitlab::users_prereq"
chef.add_recipe "rvm::vagrant"
chef.add_recipe "rvm::system"
chef.add_recipe "ohai"
chef.add_recipe "nginx"
chef.add_recipe "gitlab::python_tools_prereq"
chef.add_recipe "gitlab::gitolite_prereq"
chef.add_recipe "gitlab::gitlab_install"

Todo funciona bien, pero me gustaría tener esta especificación en la receta, para que un usuario solo tenga que incluir la receta predeterminada y obtener todo lo que sea necesario instalado en el orden correcto.

¿Cómo puedo resolver esto?¿Debo usar un papel?No lo entiendo de los documentos del chef, si la función se puede especificar dentro de una receta.

¿Fue útil?

Solución

Supongo que no todas sus recetas se pueden instalar en la máquina limpia.Pero deberían ser.Si alguna receta "A" tiene algunos requisitos previos, debe agregar que las recetas requeridas en la receta "A" usan include_recipe.

En su caso, supongo que gitlab :: gitlab_install requiere gitlab :: gitolite_prereq y gitlab :: python_tools_prereq .Eso significa que debe agregar a su cookbooks/gitlab/recipes/gitlab_install.rb:

incude_recipe 'gitlab::gitolite_prereq'
incude_recipe 'gitlab::python_tools_prereq'

También puede incluir recetas de otros libros de cocina de esta manera.Para Exampple OHAI requiere rvm :: System .Añadir a cookbooks/ohai/recipes/default.rb:

incude_recipe 'rvm::system'

y agregar a cookbooks/ohai/metadata.rb:

depends 'rvm'

De esta manera, no tendrá que escribir todas las recetas en algún orden exacto, y no tiene que escribir todas las dependencias, se instalarán automáticamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top