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"