Szef kuchni - definicja
Definicję można zdefiniować jako logiczną metodę grupowania zasobów, które są wielokrotnie używane. W tym przepływie grupujemy zasoby i nadajemy im nazwy, aby odzyskać czytelność zdefiniowanych książek kucharskich.
Aby to zrobić, powinniśmy mieć przepis. W tym przypadku używamy test_cookbook i uruchom listę węzłów, która zawiera książkę kucharską.
Tworzenie definicji
Step 1 - Utwórz nowy plik definicji w folderze definicji książek kucharskich.
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 - Użyj definicji w domyślnym przepisie z książek kucharskich.
vipin@laptop:~/chef-repo $ subl cookbooks/test_cookbook/recipes/default.rb
capistrano_deploy_dirs do
deploy_to "/srv"
end
Step 3 - Prześlij książkę kucharską na serwer szefa kuchni.
vipin@laptop:~/chef-repo $ knife cookbook upload test_cookbook
Uploading test_cookbook [0.1.0]
Step 4 - Uruchom klienta Chef na wybranym węźle.
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]
Definicje w książkach kucharskich są jak mikro, które grupują zasoby i nadają im nazwy. Definicja ma nazwę, po której można je określić, z której można ją wywołać w przepisie, i zawiera listę obwodów.
W definicji mamy parametry, które w naszym kodzie wyglądają następująco.
…..
directory "#{params[:deploy_to]}/releases"
directory "#{params[:deploy_to]}/shared"
directory "#{params[:deploy_to]}/shared/system”
……
Można go użyć w ramach domyślnej receptury w następujący sposób.
capistrano_deploy_dirs do
deploy_to "/srv"`
end