Учебники

Шеф-повар — Определение

Определение можно определить как логический метод группировки ресурсов, которые используются снова и снова. В этом потоке мы группируем ресурсы и даем им имя, чтобы восстановить читаемость определенных поваренных книг.

Для этого у нас должен быть рецепт. В этом случае мы используем test_cookbook и список запуска узлов, который включает кулинарную книгу.

Создание определения

Шаг 1 — Создайте новый файл определения в папке определения поваренных книг.

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

Шаг 2 — Используйте определение в рецепте поваренных книг по умолчанию.

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

Шаг 3 — Загрузите поваренную книгу на сервер шеф-повара.

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

Шаг 4 — Запустите клиент Chef на нужном узле.

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] 

Определение в кулинарных книгах похоже на микро, которые группируют ресурсы и дают им имя. У определения есть имя, по которому можно узнать их, из которого можно вызвать внутри рецепта, и у него есть список периметров.

В определении у нас есть параметры, которые в нашем коде выглядят следующим образом.

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

Его можно использовать внутри рецепта по умолчанию следующим образом.