Я экспериментирую с chef и переношу на него конфигурацию сервера. Единственное препятствие, с которым я сталкиваюсь, - это то, как работать с пакетами, которые необходимо компилировать и устанавливать вручную (configure, make, make install), но для компиляции требуется вечность. Я не хочу препятствовать запуску сервера только потому, что для построения зависимости требуется вечность.
Конкретный вариант использования: wkhtmltopdf. Wkhtmltopdf с полными функциями требует нестандартного / исправленного qt, который требует НАВСЕГДА для компиляции.
Вот что я вижу в качестве вариантов: 1) Скомпилируйте пакет с помощью chef при каждом запуске (Con: запуск сервера занимает вечность) 2) Скомпилируйте пакеты один раз, tar и их. Затем просто скачайте пакет и установите его. (Против: не будет работать для машин с разными ОС / оборудованием) 3) Скомпилируйте пакет один раз и просто сохраните его в базовом образе и вне chef (Chef: пакет отсутствует в chef)
Любые идеи?
Правильный подход к chef / puppet и др. Состоит в том, чтобы упаковать это программное обеспечение в собственный формат упаковки вашего дистрибутива () и включить его в свои репозитории, а затем извлечь этот пакет.
Хотя многие из общих кулинарных книг Chef действительно создаются из исходного кода, это не потому, что это обязательно лучший путь для установки программного обеспечения в системы. Часто это указывает на «самую простую вещь, которая могла бы работать (но не оптимизирована)» или «у автора (поваренной книги) нет времени / ресурсов для поддержания общедоступного репозитория пакетов».
«Обычная практика» (*) - собрать и установить собственные пакеты для вашей платформы и разместить их во внутреннем репозитории. Если вы работаете в компании, которая поддерживает совместное использование, вы также можете внести свой вклад в апстрим или использовать общедоступный репозиторий (например, Ubuntu PPA).
Проблема с этим подходом в том, что у всех основных дистрибутивов разные мнения об управлении пакетами, поэтому все работает немного по-разному. Это где Джордан Сиссель "fpm" действительно удобно. Хотя сейчас он работает только на RPM, DEB и Solaris, поддержка других систем упаковки планируется. Вы можете дополнительно подключить fpm к серверу непрерывной интеграции, например Дженкинс вызывая нужную команду fpm на этапе сборки в Jenkins.
После того, как вы создали пакеты, которые хотите развернуть, вам нужно будет поместить их в репозиторий. Если вы не можете поделиться этим публично через PPA, я предлагаю создать хост репозитория пакетов с помощью Chef. Если вы используете Debian / Ubuntu, реппро часто используется для создания подходящего репозитория. Для RPM / Yum распространено mrepo, хотя я не знаю кулинарной книги, которая бы его настраивала. Тогда вы могли бы использовать подходящий или ням поваренные книги для настройки репозитория на других ваших узлах.
Другой путь, который может быть более простым, - это собрать программное обеспечение, настроить его и закрепить на HTTP-сервере, к которому ваши узлы могут добраться, а затем использовать Брайан Берри ковчег Ресурс поваренной книги для его получения и распаковки.
(*) Я говорю «обычное», потому что не люблю здесь «лучший» :)