Chef - Definizione

La definizione può essere definita come un metodo logico per raggruppare le risorse, che vengono utilizzate ancora e ancora. In questo flusso, raggruppiamo le risorse e assegniamo loro un nome per recuperare la leggibilità dei libri di cucina definiti.

Per fare questo, dovremmo avere una ricetta. In questo caso, stiamo usando test_cookbook e un run list di nodi, che include il ricettario.

Creazione di una definizione

Step 1 - Crea un nuovo file di definizione nella cartella delle definizioni dei libri di cucina.

[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 - Usa una definizione all'interno della ricetta predefinita dei libri di cucina.

[email protected]:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb 
capistrano_deploy_dirs do 
   deploy_to "/srv" 
end

Step 3 - Carica il ricettario sul server dello chef.

[email protected]:~/chef-repo $ knife cookbook upload test_cookbook 
Uploading test_cookbook [0.1.0]

Step 4 - Eseguire il client Chef sul nodo desiderato.

[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]

La definizione nei libri di cucina è come i micro, che raggruppano le risorse e danno loro un nome. Una definizione ha un nome con cui si può distinguere da cui può essere chiamata all'interno della ricetta e ha un elenco di perimetri.

Nella definizione abbiamo parametri che nel nostro codice hanno il seguente aspetto.

….. 
directory "#{params[:deploy_to]}/releases" 
directory "#{params[:deploy_to]}/shared" 
directory "#{params[:deploy_to]}/shared/system” 
……

Può essere utilizzato all'interno della ricetta predefinita come segue.

capistrano_deploy_dirs do 
   deploy_to "/srv"` 
end