Статьи

Настройка Chef часть 1

Ниже приведены первые шаги в начале работы с шеф-поваром.
Три основных компонента шеф-повара:

  1. Рабочая станция
    Эта машина разработчика будет использоваться для создания кулинарных книг и рецептов и загрузки их на chef-сервер с помощью утилиты командной строки, называемой ножом.
  2. Шеф-сервер
    Это основной сервер, на который загружаются все поваренные книги, роли, политики.
  3. Узел
    Это тот случай, который будет предоставлен путем применения поваренных книг, загруженных на chef-сервер.

Итак, начнем:

  1. Настройте рабочую станцию

  • Использовать хост-шеф в качестве chef-сервера
    • Зарегистрируйтесь на сайте шеф-повара по адресу http://www.getchef.com.
    • Вы можете использовать размещенный Chef, он дает вам возможность бесплатно управлять до 5 узлов.
    • Создайте своего пользователя и организацию.

    Для аутентификации вашей рабочей станции на chef-сервере нам понадобятся 3 вещи:

    1
    2
    3
    -[validator].PEM
      -knife.rb
      -[username].PEM

    Итак, вам нужно загрузить эти 3 элемента на вашу рабочую станцию. (Вы можете попробовать сброс ключей или загрузить стартовый комплект.)

  • Настройте шеф-репо на рабочей станции
    • Откройте свою рабочую станцию, перейдите в папку, которую вы хотите использовать в качестве базовой папки для написания кулинарных книг.
    • Загрузите шеф-репо с gps-репозитория opscode или используйте стартовый набор, представленный на сайте шеф-повара.
    • Поместите эти 3 файла в свою папку .chef внутри папки chef-repo на своей рабочей станции (создайте .chef, если его еще нет).

    Теперь ваша рабочая станция настроена, аутентифицирована на chef-сервере, а ваше chef-repo настроено. Итак, давайте приступим к настройке узла, к которому будут применяться кулинарные книги.

  • Настройка узла

  • Узел может быть экземпляром EC2 или может быть предоставлен любым другим облачным провайдером или виртуальной машиной.
    Первый шаг — это запустить его.

    • Начальная загрузка любого экземпляра
    1
    knife bootstrap [ip-address] --sudo -x [user-name] -P [password] -N "[node name]"

    Или для экземпляра AWS:

    1
    knife bootstrap [AWS external IP] --sudo -x ec2-user -i [AWS key] -N "awsnode"

    Это то, что происходит во время начальной загрузки:

    1
    2
    3
    1.) Installs chef client and OHAI on the node
    2.) Establishes authentication for ssh keys.
    3.) Send the 3 keys to chef-client

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

  • Скачать кулинарную книгу
    • Мы загрузим уже существующую кулинарную книгу веб-сервера apache, используя следующую команду ножа (помните, что все команды ножа должны выполняться из каталога base chef-repo).
    1
    knife cookbook site download apache

    Это скачает zip-папку tar.gz в ваш chef-repo. Нам нужно будет распаковать ее и скопировать в папку cookbooks. (После распаковки удалите заархивированный файл) (используйте tar -xvf [file], затем mv command)

    1
    mv apache ../chef-repo/cookbooks

    Внутри папки apache мы можем найти папку «recipes», а внутри нее есть файл с именем «default.rb».
    Этот ruby-файл «default.rb» содержит рецепт по умолчанию, необходимый для настройки сервера apache. Давайте посмотрим на выдержку из него.

    1
    2
    3
    4
    5
    ....
    package "httpd" do
            action :install
    end
    ....

    Таким образом, эта кулинарная книга определяет действие по умолчанию для приложения этого рецепта, которое будет «устанавливать», это установит веб-сервер apache на узле. Подробнее об этом мы расскажем в следующем блоге, а пока просто загрузим этот coookbook.

  • Загрузить кулинарную книгу на chef-сервер
  • 1
    knife cookbook upload apache

    Теперь поваренная книга загружена на chef-сервер. Когда у chef-сервера есть поваренная книга, мы можем применить ее к любому из узлов, настроенных с помощью chef-сервера. Сначала давайте найдем, какие у нас все узлы.

    • Чтобы увидеть все мои узлы
    1
    knife node list

  • Применить список выполнения к узлу
  • Чтобы применить кулинарную книгу к данному узлу, нам нужно добавить ее в список выполнения узла:

    1
    knife node run_list add node-name "recipe[apache]"

    Теперь мы успешно загрузили кулинарную книгу и добавили ее в список выполнения узла с псевдонимом «имя-узла». В следующий раз, когда chef-клиент будет запущен на узле, он получит сведения о своем списке выполнения с chef-сервера, загрузит любую поваренную книгу, необходимую с chef-сервера, и запустит ее.
    А пока давайте зайдем в узел по ssh и запустим chef-client вручную, чтобы увидеть результаты.

  • Запустите chef-клиент на узле
  • 1
    sudo chef-client

    Если запуск chef-client выполнен успешно, мы можем нажать на IP-адрес экземпляра, чтобы увидеть страницу Apache по умолчанию. Если вы используете AWS, не забудьте открыть порт 80.

    Это было просто базовое введение в chef, в следующем блоге мы увидим убийственную особенность chef, которая заключается в поиске и подробном описании объекта узла, ролей, окружения.

    Ссылка: Настройка шеф-повара, часть 1, от нашего партнера по JCG Анируд Бхатнагар в блоге Анирудх Бхатнагар.