Статьи

повар-соло с бродягой

Чтобы изучить концепции шеф-повара, мы можем начать с использования chef-solo с Vagrant. Смотрите мой предыдущий пост о Vagrant, чтобы установить vagrant и узнать больше об этом.

Далее, давайте установим chef-solo на нашу машину. Мы установим chef-solo с помощью ruby ​​gem, убедитесь, что у вас установлен ruby.

1
2
3
root@intro:~# cd ~
root@intro:~# sudo gem install chef
Thank you for installing Chef!

Итак, теперь мы установили chef-solo и vagrant на нашу машину. В этом упражнении мы попытаемся установить apache2 на виртуальную машину Ubuntu (виртуальный ящик), используя chef-solo и vagrant. Для начала нам нужно сначала понять несколько концепций; который потребуется для запуска шеф-повара в Vagrant.

run-lists : первое, что нам нужно знать, это run-lists. Список запуска подобен списку воспроизведения для узла. Он сообщает узлу, какие рецепты необходимы для запуска и в каком порядке. Это всегда зависит от узла, на котором он работает. Важно отметить, что клиент-шеф всегда настраивает узел в точном порядке, указанном в его списке запуска, и никогда не запускает один и тот же рецепт дважды.

Итак, если мы хотим установить apache2 на узел:

  • Сначала нужно поместить этот рецепт в кулинарную книгу и настроить путь к кулинарным книгам.
  • Затем упомяните об этом в списке выполнения.

Давайте посмотрим, как это сделать:

  1. Настроить рецепты и кулинарные книги:

    Рецепты в кулинарной книге ведутся с помощью ножа. Нож является инструментом командной строки для шеф-повара.

    Где положить свои рецепты?

    Рецепты находятся в папке поваренных книг. По умолчанию, если папка cookbooks находится на том же уровне, что и Vagrantfile, нам не нужно явно указывать путь cookbooks. Но хорошей практикой является поддержание шеф-репо и размещение в нем папки поваренных книг. Так что нам нужно будет создать репозиторий chef на нашем сайте. Хранилище Chef — это место, где мы будем хранить все наши кулинарные книги и рецепты. Для создания chef-repo мы можем использовать уже созданную структуру каталогов, предоставленную chef.

    1
    2
    3
    4
    root@intro:~# tar -zxf master
    root@intro:~# mv opscode-chef-repo* chef-repo
    root@intro:~# rm master

    Это создаст папку chef-repo со всеми необходимыми объектами внутри нее. Позже мы подробно обсудим, какие папки / файлы находятся внутри chef-repo и как их использовать. Теперь нам просто нужно сосредоточиться на папке поваренных книг.

    Внутри Vagrantfile нам нужно определить этот путь как:

    1
    2
    3
    4
    config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "~/Projects/chef-repo/cookbooks"
    ....
    end

    После настройки папки cookbooks и указания ее пути, давайте поместим в нее несколько рецептов. Давайте положим рецепт HTTP-сервера Apache, используя нож. Для этого нам нужно выполнить эту команду:

    1
    knife cookbook site download apache2

    Эта команда загрузит сжатую папку с рецептами, распакует эту папку в папку cookbooks (мы можем скачать tar.gz где угодно, но его нужно извлечь в папку cookbooks).

    1
    Anirudhs-MacBook-Pro:cookbooks xebia$ tar -xvzf apache2-1.7.0.tar.gz

    Следующим шагом будет добавить это в список выполнения.

  2. Добавление рецепта в список запуска:

    Чтобы добавить рецепт в список выполнения, нам просто нужно добавить его, используя chef.add_recipe «xxx»

    Давайте посмотрим на пример: [это в Vagrantfile]

    1
    2
    3
    4
    5
    Vagrant.configure("2") do |config|
      config.vm.provision "chef_solo" do |chef|
        chef.add_recipe "apache"
      end
    end

    Итак, подведем итог, мы сделали следующие изменения:

    1. настроил шеф-репо
    2. предоставил поваренным книгам путь к шеф-повару
    3. скачал рецепт используя нож
    4. добавил рецепт в кулинарные книги
    5. добавил этот рецепт в run-list

    Наконец, или Vagrantfile выглядит так:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    Vagrant.configure("2") do |config|
        config.vm.box = "precise32"
        config.vm.box_url = "http://files.vagrantup.com/precise32.box"
        config.vm.network :forwarded_port, guest: 80, host: 8888
        config.vm.provision :chef_solo do |chef|
            chef.add_recipe "apache2"
            chef.json = { :apache => { :default_site_enabled => true } }
        end
    end

    Обратите внимание на строку «config.vm.network: forwarded_port, guest: 80, host: 8888», которая добавляется для пересылки входящих запросов на порт 80 (по умолчанию HTTP) на порт 8888 (где http-сервер apache прослушивает).

Следующий шаг — сделать vagrant и нажать на браузер localhost: 8888, чтобы увидеть страницу с известными работами.

Ссылка: повар-соло с vagrant от нашего партнера JCG Анируд Бхатнагар в блоге о анирудх бхатнагар .