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