Chef - Definición
La definición se puede definir como un método lógico de agrupar recursos, que se utilizan una y otra vez. En este flujo, agrupamos los recursos y les damos un nombre para recuperar la legibilidad de los libros de cocina definidos.
Para hacer esto, deberíamos tener una receta. En este caso, estamos usando test_cookbook y una lista de ejecución de nodos, que incluye el libro de recetas.
Crear una definición
Step 1 - Cree un nuevo archivo de definición en la carpeta de definiciones de libros de cocina.
[email protected]:~/chef-repo $ subl cookbooks/test_cookbook/definitions/
capistrano_deploy_dirs.rb
define :capistrano_deploy_dirs, :deploy_to => '' do
directory "#{params[:deploy_to]}/releases"
directory "#{params[:deploy_to]}/shared"
directory "#{params[:deploy_to]}/shared/system"
end
Step 2 - Utilice una definición dentro de la receta predeterminada de los libros de cocina.
[email protected]:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb
capistrano_deploy_dirs do
deploy_to "/srv"
end
Step 3 - Sube el libro de cocina al servidor del chef.
[email protected]:~/chef-repo $ knife cookbook upload test_cookbook
Uploading test_cookbook [0.1.0]
Step 4 - Ejecute el cliente Chef en el nodo deseado.
[email protected]:~/[email protected] $ sudo chef-client
...TRUNCATED OUTPUT...
[2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/
releases] action create (my_cookbook::default line 2)
[2013-01-18T16:31:11+00:00] INFO: directory[/srv/releases] created
directory /srv/releases
[2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/
shared] action create (my_cookbook::default line 3)
[2013-01-18T16:31:11+00:00] INFO: directory[/srv/shared] created
directory /srv/shared
[2013-01-18T16:31:11+00:00] INFO: Processing directory[/srv/
shared/system] action create (my_cookbook::default line 4)
[2013-01-18T16:31:11+00:00] INFO: directory[/srv/shared/system]
Las definiciones en los libros de cocina son como micros, que agrupan los recursos y les dan un nombre. Una definición tiene un nombre por el cual se les puede decir de cuál se puede llamar dentro de la receta y tiene una lista de perímetros.
En la definición, tenemos parámetros que en nuestro código se parecen a lo siguiente.
…..
directory "#{params[:deploy_to]}/releases"
directory "#{params[:deploy_to]}/shared"
directory "#{params[:deploy_to]}/shared/system”
……
Se puede utilizar dentro de la receta predeterminada de la siguiente manera.
capistrano_deploy_dirs do
deploy_to "/srv"`
end