Chef - Définition

La définition peut être définie comme une méthode logique de regroupement des ressources, qui sont utilisées encore et encore. Dans ce flux, nous regroupons les ressources et leur attribuons un nom pour retrouver la lisibilité des livres de recettes définis.

Pour ce faire, nous devrions avoir une recette. Dans ce cas, nous utilisons test_cookbook et une liste d'exécution de nœuds, qui comprend le livre de recettes.

Créer une définition

Step 1 - Créez un nouveau fichier de définition dans le dossier de définition des livres de cuisine.

[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 - Utilisez une définition dans la recette par défaut des livres de cuisine.

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

Step 3 - Téléchargez le livre de cuisine sur le serveur du chef.

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

Step 4 - Exécutez le client Chef sur le nœud souhaité.

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

Les définitions dans les livres de recettes sont comme des micros, qui regroupent les ressources et leur donnent un nom. Une définition a un nom par lequel on peut les dire à partir de laquelle peut être appelée à l'intérieur de la recette et elle a une liste de périmètres.

Dans la définition, nous avons des paramètres qui dans notre code ressemblent à ce qui suit.

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

Il peut être utilisé dans la recette par défaut comme suit.

capistrano_deploy_dirs do 
   deploy_to "/srv"` 
end