Chef - Definition

Definition kann als logische Methode zum Gruppieren von Ressourcen definiert werden, die immer wieder verwendet werden. In diesem Ablauf gruppieren wir die Ressourcen und geben ihnen einen Namen, um die Lesbarkeit definierter Kochbücher wiederherzustellen.

Dazu sollten wir ein Rezept haben. In diesem Fall verwenden wir test_cookbook und eine Ausführungsliste von Knoten, die das Kochbuch enthält.

Definition erstellen

Step 1 - Erstellen Sie eine neue Definitionsdatei im Definitionsordner für Kochbücher.

vipin@laptop:~/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 - Verwenden Sie eine Definition im Standardrezept des Kochbuchs.

vipin@laptop:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb 
capistrano_deploy_dirs do 
   deploy_to "/srv" 
end

Step 3 - Laden Sie das Kochbuch auf den Kochserver hoch.

vipin@laptop:~/chef-repo $ knife cookbook upload test_cookbook 
Uploading test_cookbook [0.1.0]

Step 4 - Führen Sie den Chef-Client auf dem gewünschten Knoten aus.

vipin@laptop:~/chef-repuser@server $ 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]

Definitionen in Kochbüchern sind wie Mikros, die die Ressourcen gruppieren und ihnen einen Namen geben. Eine Definition hat einen Namen, anhand dessen man ihnen sagen kann, von welchem ​​innerhalb des Rezepts aufgerufen werden kann, und es gibt eine Liste von Perimetern.

In der Definition haben wir Parameter, die in unserem Code wie folgt aussehen.

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

Es kann im Standardrezept wie folgt verwendet werden.

capistrano_deploy_dirs do 
   deploy_to "/srv"` 
end