Pull to refresh
0

Настраиваем сервер с Chef (Быстро и просто)

Reading time 3 min
Views 14K
The best way to learn Chef is to use Chef
— getchef.com



Chef — это инструмент для конфигурирования серверов в концепции Infrastructure as a Code(IaaC).
Лично для меня, Chef — это, в первую очередь, возможность хранить архитектуру сервиса в виде ролей, и модифицировать её, избегая рутинных действий по установке пакетов и конфигурации.

Chef позволяет выполнять любые скрипты на сервере, предоставляя свой собственный синтаксис для их описания. Кроссплатформенно и структурировано.
Обладает довольно высоким порогом вхождения. Причинами являются: запутанная на первый взгляд терминология и разница в использовании Chef и Chef solo.
Solo — простой путь для начинающих работать с Chef, позволяет управлять конфигурацией без необходимости иметь дополнительный служебный сервер, что ограничивает функционал. Однако, эти ограничения дают о себе знать при управлении большим парком серверов.

Эту статью можно назвать «конспектом Chef».
Возможно, текст будет похож на переведенный промптом, но, я думаю что, термины используемые в тексте лучше не переводить, буду рад узнать ваше мнение на этот счёт.


Термины

  • knife — консольная утилита, позволяющая выполнять скрипты с локальной машины на удаленном севере. Главный инструмент настоящего повара.
  • recipe — скрипт, выполняемый на сервере. Может выполнять любые задачи: от создания директорий, до установки и настройки Nginx.
  • cookbook — коллекция скриптов (recipes). Существует множество готовых cookbooks (например, для установки MySQL и т.п.), которые можно применять, не залезая внутрь скрипта.
  • role — Роль сервера. Например mysql или nginx. Роль может иметь произвольное количество cookbooks. Сервер может иметь несколько ролей.
  • node — сервер с указанным IP адресом.


Использование

Пришло время собрать все термины в логичную цепочку и понять, как же используется Chef.

Для настройки сервера вы описываете recipes внутри cookbooks, и выполняете их утилитой knife на node имеющего одну или несколько roles.

А теперь, практика

Вам необходимо иметь Ruby, а если у вас его нет, то самое время установить Ruby-lang.org

Установим и настроим Nginx на свежем сервере.

Создаём директорию, например chef-test и переходим в нее.
Устанавливаем необходимые инструменты для работы: chef, knife-solo и berkshelf.
Berkshelf — менеджер поваренных книг, аналог bundler

Создаём файл Gemfile со следующим содержанием:
source "https://rubygems.org"

gem 'knife-solo'
gem 'berkshelf'

Командой bundle заканчиваем установку
bundle


В текущей директории создаём кухню
knife solo init .
berks init .

В созданный Berksfile добавляем необходимые нам cookboks
cookbook 'nginx'

И скачиваем их
berks install


Описываем конфигурацию сервера (node)
В директории nodes создаем файл и называем его следующим образом: <IP-адрес сервера>.json
Файл описывает: какие именно скрипты (recipes) необходимо выполнить на заданном сервере (node)
{
  "nginx": {
    "version": "1.6.0",
    "install_method": "source",
    "default_site_enabled": true,
  },
  "run_list": [
    "recipe[nginx]"
  ]
}

run_list указывает, какие именно рецепты или группы рецептов (role) необходимо выполнить.
В данном варианте, выполняется рецепт из Nginx cookbook

Запускаем Chef и наслаждаемся работой машины за человека
knife solo bootstrap username@host -i ~/.ssh/ssh_key.pem

Результатом будет готовый сервер с работающим веб-сервером.

Если необходимо внести изменения, например сменить версию Nginx, достаточно поменять конфигурацию в node файле и выполнить
knife solo cook username@host -i ~/.ssh/ssh_key.pem

Chef применяет только рецепты, в которые были внесены изменения, так что можно не опасаться за сохранность конфигурации сервера.

Надеюсь эта статья помогла преодолеть барьер Chef, т.к. дальше вас ждёт только радость от простоты использования этого отличного инструмента.

Если данная тема вам интересна, в следующей статье я хотел бы описать процесс создания типичной инфраструктуры для rails приложения в Amazon AWS.

Альтернативы Chef



Полезные ссылки



Мы используем эти инструменты в проекте Staply.
О нём мы расскажем уже совсем скоро!
image
Only registered users can participate in poll. Log in, please.
Используете ли вы автоматизацию развертывания серверов?
51.05% Нет, настраиваю всё самостоятельно 97
13.16% Да, используя самописные скрипты 25
35.79% Да, используя Chef, Puppet и т.п. 68
190 users voted. 50 users abstained.
Tags:
Hubs:
+11
Comments 12
Comments Comments 12

Articles

Information

Website
www.staply.co
Registered
Founded
Employees
2–10 employees
Location
Россия