Chef: различия между версиями
Sirmax (обсуждение | вклад) (→Chef) |
Sirmax (обсуждение | вклад) |
||
| Строка 27: | Строка 27: | ||
support ubuntu |
support ubuntu |
||
support debian |
support debian |
||
| + | </PRE> |
||
| + | |||
| + | Поддерживаются все возможные элементы языка Ruby (группы, массивы, сравнения и так далее), например, очень просто можно задать версию дистрибутива — ‘ubuntu’, «>= 8.04″. |
||
| + | Далее обычно идут описания атрибутов, которые необходимо сконфигурировать: |
||
| + | <PRE> |
||
| + | 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" |
||
</PRE> |
</PRE> |
||
Версия 17:11, 30 октября 2012
Chef
Компиляция из разных источников. (см. ссылки)
Рецепты
$ 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"