Добавление серверов Solaris, которыми будет управлять Chef, было самой раздражающей записью в нашем журнале Wix.com DevOps почти год. Мы перенесли наши базы данных MySQL в Solaris более года назад. Мы автоматизируем все, но попадание Solaris на кухню шеф-повара было не таким уж и тривиальным. Поддержка Solaris в Chef минимальна, поэтому я сделал несколько дополнений для Chef, которые другие счастливые мастера Solaris Chef могут найти полезными.
Моя первая проблема при настройке Chef на Solaris заключалась в том, что для Solaris 5.10 x86 не существует универсального установщика.
К сожалению, от простой установки Solaris до той, которая может установить гем chef, требуется немало работы. Итак, я написал файл начальной загрузки, который работает для вас.
Этот файл начальной загрузки делает следующее:
- Добавляет / opt / csw / lib и / usr / local / lib в путь к библиотеке (через crle).
- Устанавливает pkgutil из OpenCSW.
- Устанавливает libgcc_s1, coreutils, libssl1_0_0, wget, gsed, binutils и gmake через pkgutil.
- Устанавливает ruby с http://www.sunfreeware.com/ ( ruby из OpenCSW работает неправильно ).
- Переименуйте некоторые файлы, чтобы ruby мог создавать новые драгоценные камни.
- Устанавливает драгоценности ohai и chef.
- Добавляет патч для добавления пользователей в группы (см. CHEF-3245 ).
- Создает исходные файлы Chef.
Вы можете получить этот файл начальной загрузки с GitHub .
Как только вы загрузите этот файл, поместите его в .chef / bootstrap / solaris.erb в корне вашего хранилища Chef. Если вы единственный пользователь, которому это нужно, вы можете поместить его в свой домашний каталог.
Если у вас есть файл начальной загрузки (или если вы используете другой файл начальной загрузки), вы можете установить Chef.
Установка Chef на Solaris:
- Войдите в систему, на которую хотите установить Chef.
- Установите имя хоста.
- Включить root-вход через SSH. (Установите PermitRootLogin yes в / etc / ssh / sshd_config)
- svcadm перезапустить ssh
- Перейдите в корень репозитория Chef Git
- нож бутстрап -d солярис
- войдите в систему как root и запустите: chef-client
Использование пакетов OpenCSW:
Моя следующая проблема состояла в том, что я хочу иметь возможность устанавливать пакеты OpenCSW от Chef. Я написал LWRP для pkgutil и загрузил его на сайт поваренной книги сообщества Opscode . Вы можете установить это в свой репозиторий Chef, выполнив «Установка сайта с готовой книгой ножей pkgutil». Сделав это, вы можете начать использовать пакеты OpenCSW в своих кулинарных книгах.
В поваренную книгу с ресурсами pkgutil_package добавьте зависимость от поваренной книги pkgutil в свой файл metadata.rb, например так:
1
|
depends 'pkgutil' |
Затем используйте ресурсы следующим образом:
1
|
pkgutil_package 'vim' |
Или же:
01
02
03
04
05
06
07
08
09
10
11
|
pkgutil_package 'vim' do action :install end pkgutil_package 'top' do action :upgrade end pkgutil_package 'less' do action :remove end |
Использование zpools, zfs и зон:
Следующей задачей было управление zpools , файловыми системами zfs и зонами через Chef. Для этого я также написал для них LWRP, которые вы можете установить так же, как и для pkgutil.
Чтобы использовать эти ресурсы, в поваренную книгу, в которой есть эти ресурсы, добавьте зависимость от соответствующей поваренной книги в свой файл metadata.rb, например так:
1
2
|
depends 'zpool' depends 'zfs' |
Или же:
1
|
depends 'zone' |
Затем в глобальной зоне включите рецепт, подобный этому:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
zpool 'zones' do disks [ 'c0t2d0s0' ] end zfs 'zones/test' directory '/zones/test' do mode '0700' end zone 'test' do path '/zones/test' limitpriv 'default,dtrace_proc,dtrace_user' password 'whbFxl4vH5guE' nets [ '192.168.0.9/24:e1000g0' ] end |
Собираем все вместе:
Моей последней задачей было объединить все это в один шаг для создания новых зон. Это было сделано для того, чтобы облегчить переход в Chef для наших администраторов Solaris, которые привыкли создавать новые зоны с помощью нескольких сценариев оболочки. Вы можете получить этот скрипт на GitHub .
Для запуска скрипта требуется ruby 1.9, а также гемы chef, git и net / ssh. Chef должен быть установлен в глобальной зоне, а zpool для зоны уже должен быть создан. Настоятельно рекомендуется настроить DNS для новой зоны перед началом!
Чтобы увидеть все параметры, запустите скрипт с ключом -h:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
shell$ create_zone.rb -h Usage: . /create_zone .rb (options) -d, --debug Turn on debugging messages -t, --git Add /commit/push new recipes to git -g, --global GLOBAL The FQDN of the server to create the zone on (required) -c, --config KNIFE_CONFIG Knife configuration file (defaults to ~/.chef /knife .rb) -n, --net NET Network information for the new zone, in the form: ipaddress[ /cidr ]:interface (required) -r, --run_list RUN_LIST Specify the run_list for the new zone -s, --password SSH_PASSWORD SSH password to use (required) -P, --port SSH_PORT SSH port to use (defaults to 22) -z, --zone ZONE The hostname of the new zone (required) -p, --zpool ZPOOL Name of the zpool to use (defaults to rpool) -h, --help Show this message< /pre > # Here is an example of how to create a new zone named test on the host global.example.com and install mysql in the new zone: shell$ create_zone.rb -n 192.168.0.9 /24 :e1000g0 -z test -g global.example.com -s testpw -p zones -r 'recipe[mysql::server]' |
Скрипт будет:
- Сгенерируйте рецепты для создания файловых систем zfs и зоны.
- Если указано -t, добавьте, передайте и отправьте новые рецепты в git.
- Загрузите кулинарную книгу на сервер Chef (используя конфигурацию knife.rb, указанную с -c).
- Добавьте новый рецепт в глобальный хост.
- Запустите Chef на глобальном хосте, создав новые зоны и зоны.
- Нож загружает новую зону с начальным run_list, заданным параметром -r.
Вы можете взять этот скрипт и изменить его для своей среды (возможно, вы захотите изменить шаблон для сгенерированного рецепта), но, надеюсь, вы найдете его полезным!
Ссылка: Chef Happens — Управление Solaris с Chef от нашего партнера по JCG Йоава Абрахами в блоге Wix IO .