Определение можно определить как логический метод группировки ресурсов, которые используются снова и снова. В этом потоке мы группируем ресурсы и даем им имя, чтобы восстановить читаемость определенных поваренных книг.
Для этого у нас должен быть рецепт. В этом случае мы используем 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” ……
Его можно использовать внутри рецепта по умолчанию следующим образом.