Chef
Chef
Компиляция из разных источников. (см. ссылки)
По-моему довольно сложный в освоении продукт потому я решил вести заметки здесь. Особого понимания пока нет, как и знаний руби (а судя по всему это ключевое), потому тут возможны неточности, догадки и т.п. Все описаное ниже пробую под разные системы, но в основном под убунту.
Установка
В /etc/apt/sources.list (добавить свой репозиторий)
deb http://apt.opscode.com/ oneiric-0.10 main universe
sudo aptitude update sudo aptitude show chef
Если установка производится на сервер, то:
sudo aptitude install rubygems ohai chef chef-server chef-server-webui
В этом случае будут установлены все зависимости, созданы все необходимые файлы настроек и запуска при загрузке ОС. Запускается CouchDB и Stompserver (порт 61613). Стартует chef-server в настройках по умолчанию (порт 4000 и 4001), веб-интерфейс (4040), а также демоны chef-solr и клиент.
Установка на клиенте:
sudo aptitude install rubygems ohai chef
В документации особо подчеркнуто, что следует использовать именно aptitude который по умолчанию устанавливает мягкие зависимости. Но версия как видите, запаздывает и мы не получим возможности доступные в актуальном релизе. Поэтому для подготовленного администратора наиболее правильной будет самостоятельная сборка и bootstrap. Минимальное требование к установке Chef — Ruby и Rubygems. В Ubuntu их можно установить из репозитария:
sudo aptitude install ruby ruby1.8-dev libopenssl-ruby1.8 rdoc ri irb build-essential wget ssl-cert libxml-ruby libxml2-dev libxslt-dev
Отмечу что я не пробовал делать самостоятельную сборку пока что
Проблемы после установки
У меня после установки ничего не работало, начинаю исследовать.
Создадим локальные копии Git репозитариев Chef и Cookbooks, в последующем мы будем использовать некоторые файлы:
git clone http://github.com/opscode/chef.git git clone http://github.com/opscode/cookbooks.git
Рецепты
$ sudo apt-get install git-core $ git clone git://github.com/opscode/cookbooks.git
Для создании новой Cookboks используется команда “rake new_cookbook”, с указанием ее названия. $ rake new_cookbook COOKBOOK=nginx
Пример рецепта
В результате будет создана вся необходимая структура. Внутри каталога Cookbooks содержится несколько файлов и подкаталогов имеющих определенное назначение. Все тонкости Cookbooks разбирать не будем, именно этот вопрос в документации освещено более менее хорошо. Основной файл называется metadata.rb содержит описание, данные мантайнера, лицензию, список поддерживаемых ОС, зависимости, конфликты и атрибуты. Например:
# список поддерживаемых ОС %w{ ubuntu debian }.each do |os| supports os end # зависимости %w{ build-essential runit }.each do |cb| depends cb end
Даже если вы ни разу не писали в Ruby, смысл должен быть понятен. Параметр %w описывает строковый массив, а свойство .each перебирает элементы этого массива, do-end для каждого элемента выполняет выбранное действие. То есть в первом примере мы «получаем»:
support ubuntu support debian
Поддерживаются все возможные элементы языка Ruby (группы, массивы, сравнения и так далее), например, очень просто можно задать версию дистрибутива — ‘ubuntu’, «>= 8.04″. Далее обычно идут описания атрибутов, которые необходимо сконфигурировать:
attribute "nginx/dir", :display_name => "Nginx Directory", :description => "Location of nginx configuration files", :default => "/etc/nginx" attribute "nginx/worker_connections", :display_name => "Nginx Worker Connections", :description => "Number of connections per worker", :default => "1024"