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