Чтобы изучить концепции шеф-повара, мы можем начать с использования chef-solo с Vagrant. Смотрите мой предыдущий пост о Vagrant, чтобы установить vagrant и узнать больше об этом.
Далее, давайте установим chef-solo на нашу машину. Мы установим chef-solo с помощью ruby gem, убедитесь, что у вас установлен ruby.
| 1 2 3 | root@intro:~# cd ~root@intro:~# sudo gem install chefThank you forinstalling Chef! | 
Итак, теперь мы установили chef-solo и vagrant на нашу машину. В этом упражнении мы попытаемся установить apache2 на виртуальную машину Ubuntu (виртуальный ящик), используя chef-solo и vagrant. Для начала нам нужно сначала понять несколько концепций; который потребуется для запуска шеф-повара в Vagrant.
run-lists : первое, что нам нужно знать, это run-lists. Список запуска подобен списку воспроизведения для узла. Он сообщает узлу, какие рецепты необходимы для запуска и в каком порядке. Это всегда зависит от узла, на котором он работает. Важно отметить, что клиент-шеф всегда настраивает узел в точном порядке, указанном в его списке запуска, и никогда не запускает один и тот же рецепт дважды.
Итак, если мы хотим установить apache2 на узел:
- Сначала нужно поместить этот рецепт в кулинарную книгу и настроить путь к кулинарным книгам.
- Затем упомяните об этом в списке выполнения.
Давайте посмотрим, как это сделать:
-   Настроить рецепты и кулинарные книги:
Рецепты в кулинарной книге ведутся с помощью ножа. Нож является инструментом командной строки для шеф-повара. Где положить свои рецепты? Рецепты находятся в папке поваренных книг. По умолчанию, если папка cookbooks находится на том же уровне, что и Vagrantfile, нам не нужно явно указывать путь cookbooks. Но хорошей практикой является поддержание шеф-репо и размещение в нем папки поваренных книг. Так что нам нужно будет создать репозиторий chef на нашем сайте. Хранилище Chef — это место, где мы будем хранить все наши кулинарные книги и рецепты. Для создания chef-repo мы можем использовать уже созданную структуру каталогов, предоставленную chef. 1234root@intro:~# wget http://github.com/opscode/chef-repo/tarball/masterroot@intro:~# tar -zxf masterroot@intro:~# mv opscode-chef-repo* chef-reporoot@intro:~# rm masterЭто создаст папку chef-repo со всеми необходимыми объектами внутри нее. Позже мы подробно обсудим, какие папки / файлы находятся внутри chef-repo и как их использовать. Теперь нам просто нужно сосредоточиться на папке поваренных книг. Внутри Vagrantfile нам нужно определить этот путь как: 1234config.vm.provision :chef_solodo|chef|chef.cookbooks_path ="~/Projects/chef-repo/cookbooks"....endПосле настройки папки cookbooks и указания ее пути, давайте поместим в нее несколько рецептов. Давайте положим рецепт HTTP-сервера Apache, используя нож. Для этого нам нужно выполнить эту команду: 1knife cookbook site download apache2Эта команда загрузит сжатую папку с рецептами, распакует эту папку в папку cookbooks (мы можем скачать tar.gz где угодно, но его нужно извлечь в папку cookbooks). 1Anirudhs-MacBook-Pro:cookbooks xebia$tar-xvzf apache2-1.7.0.tar.gzСледующим шагом будет добавить это в список выполнения. 
-   Добавление рецепта в список запуска:
Чтобы добавить рецепт в список выполнения, нам просто нужно добавить его, используя chef.add_recipe «xxx» Давайте посмотрим на пример: [это в Vagrantfile] 12345Vagrant.configure("2")do|config|config.vm.provision"chef_solo"do|chef|chef.add_recipe"apache"endendИтак, подведем итог, мы сделали следующие изменения: - настроил шеф-репо
- предоставил поваренным книгам путь к шеф-повару
- скачал рецепт используя нож
- добавил рецепт в кулинарные книги
- добавил этот рецепт в run-list
 Наконец, или Vagrantfile выглядит так: 123456789Vagrant.configure("2")do|config|config.vm.box ="precise32"config.vm.network :forwarded_port, guest: 80, host: 8888config.vm.provision :chef_solodo|chef|chef.add_recipe"apache2"chef.json = { :apache => { :default_site_enabled =>true} }endendОбратите внимание на строку «config.vm.network: forwarded_port, guest: 80, host: 8888», которая добавляется для пересылки входящих запросов на порт 80 (по умолчанию HTTP) на порт 8888 (где http-сервер apache прослушивает). 
Следующий шаг — сделать vagrant и нажать на браузер localhost: 8888, чтобы увидеть страницу с известными работами.