После недавней вводной публикации о Chef я решил немного больше рассказать о полезных рецептах:
Иногда нам приходится конфигурировать наши машины не на основании внутренних атрибутов Chef, а на основании конфигурации, предоставляемой сторонней службой (которую опять-же ставит Chef).
В таком случае нам поможет такой трюк: описываем ресурс и запускаем его на этапе описания рецепта.
Это полезно, например, если мы храним часть данных в LDAP. Тогда мы должны сперва посредством Chef поставить и настроить клиент openldap, поставить нужный гем для получения нужных данных из LDAP, и затем эти данные можно использовать прямо в рецепте.
После обновления до Chef 0.8.6 мы обнаружили, что сильно изменился способ аутентификации клиентов.
Теперь для выполнения стандартного bootstrap нам нужно перед первым выполнением chef-client положить в /etc/chef файл /etc/chef/validation.pem (брать на сервере оттуда-же).
После этого клиент сможет автоматически провалидировать себя и получить свой личный сертификат /etc/chef/client.pem.
Не забудьте обновить в своём репозитории Chef рецепт chef, каталоги config и основной Rakefile.
Поскольку многие поваренные книги лежат на GitHub, можно найти немало полезного, пробегаясь по форкам тех же github.com/opscode/cookbooks.
Если это возможно, старайтесь и свои рецепты отпускать в свободное плавание.
Если Вы настроили Chef с использованием стиля инициализации runit, который предлагается по умолчанию, то chef-server неправильно реагирует на команду
Решается это добавлением файла
/etc/sv/chef-server/control/t (0755) со следующим содержанием:
Приложения без ошибок не существуют. Поэтому их нужно мониторить, для чего полезны такие инструменты, как runit, monit, god, munin, cacti, nagios, zabbix etc. Но я бы хотел обратить ваше внимание также на Bluepill, как замену сервисам monit и god.
Используем внешние конфигураторы
Иногда нам приходится конфигурировать наши машины не на основании внутренних атрибутов Chef, а на основании конфигурации, предоставляемой сторонней службой (которую опять-же ставит Chef).
В таком случае нам поможет такой трюк: описываем ресурс и запускаем его на этапе описания рецепта.
Это полезно, например, если мы храним часть данных в LDAP. Тогда мы должны сперва посредством Chef поставить и настроить клиент openldap, поставить нужный гем для получения нужных данных из LDAP, и затем эти данные можно использовать прямо в рецепте.
Переходим на Chef 0.8
После обновления до Chef 0.8.6 мы обнаружили, что сильно изменился способ аутентификации клиентов.
Теперь для выполнения стандартного bootstrap нам нужно перед первым выполнением chef-client положить в /etc/chef файл /etc/chef/validation.pem (брать на сервере оттуда-же).
После этого клиент сможет автоматически провалидировать себя и получить свой личный сертификат /etc/chef/client.pem.
Не забудьте обновить в своём репозитории Chef рецепт chef, каталоги config и основной Rakefile.
Множество поваренных книг
Поскольку многие поваренные книги лежат на GitHub, можно найти немало полезного, пробегаясь по форкам тех же github.com/opscode/cookbooks.
Если это возможно, старайтесь и свои рецепты отпускать в свободное плавание.
Правильно рестартим chef-server
Если Вы настроили Chef с использованием стиля инициализации runit, который предлагается по умолчанию, то chef-server неправильно реагирует на команду
sv restart chef-server
.Решается это добавлением файла
/etc/sv/chef-server/control/t (0755) со следующим содержанием:
#/bin/sh
exec 2>&1
/usr/bin/sv interrupt chef-server
Следим за сервисами
Приложения без ошибок не существуют. Поэтому их нужно мониторить, для чего полезны такие инструменты, как runit, monit, god, munin, cacti, nagios, zabbix etc. Но я бы хотел обратить ваше внимание также на Bluepill, как замену сервисам monit и god.