Развертывание приложения с помощью Puppet

10

Я новичок в Puppet, и, хотя я уже много лет использую системы * nix, я никогда не работал системным администратором или оперативным сотрудником.

В настоящее время я пишу манифесты Puppet для размещения набора (PHP / MySQL / MongoDB, код в git) веб-приложений. Очевидно, что Puppet должен иметь некоторые знания о реальных приложениях, потому что я настрою виртуальный хост для каждого из них, но я не уверен, должен ли Puppet управлять такими вещами, как развертывание кода и создание базы данных.

Является ли Puppet подходящим инструментом для развертывания приложений? Если нет, можете ли вы порекомендовать более подходящий инструмент?

michaeltwofish
источник
3
Если вы придете к этому позже, все ответы будут хорошими, не просто прочитайте тот, который я выбрал в качестве ответа.
michaeltwofish

Ответы:

10

Я бы посмотрел в Capistrano или Fabric для развертывания ..

Вы сможете лучше контролировать процесс развертывания с помощью этих двух инструментов.

Майк
источник
Я добавил +1 к этому ответу, потому что он дал два решения.
Франсуа Босолей
Я ценю указатели. В нашем стеке есть Ruby, поэтому я посмотрю на Capistrano.
michaeltwofish
9

Puppet используется для развертываний во многих крупных организациях, но не всегда идеально. Многое из этого зависит от вашей методологии развертывания. Вы развертываете на многих машинах одновременно? Вы делаете скользящие развертывания?

Некоторые организации используют Puppet, собирая пакеты своих развертываний, а затем применяя политику Puppet для обеспечения соответствия нужной версии этого пакета. Поскольку Puppet включает в себя концепцию сред, вы можете использовать среды для поэтапного развертывания (например, dev, test, prod).

Другие организации используют puppet для организации развертывания путем запуска rsync, git checkout или некоторых рекурсивных файловых копий с использованием puppet (хотя это довольно медленно).

Есть и другие довольно хорошие инструменты, доступные для развертывания. Я использовал Whiskey Disk в прошлом (простой инструмент ruby), и он мне очень понравился.

(Отказ от ответственности, я работаю в Puppet Labs)

stahnma
источник
Спасибо. Развертывания выполняются на двух сбалансированных серверах, в настоящее время использующих rsync вручную.
michaeltwofish
4

Если вы хотите собрать пакет из своего приложения, вы можете изучить FPM . Код есть на GitHub .

Франсуа Босолей
источник
Спасибо за совет. В этом случае мы не собираем пакеты, но FPM выглядит интересно, и мы можем использовать его для других задач.
michaeltwofish
4

По моему мнению, Puppet не является подходящим инструментом для развертывания приложений.

Я использую Jenkins для сборки и развертывания нашего кода для тестирования и постановки.

Изначально Jenkins - это сервер непрерывной интеграции, но он действительно гибкий и модульный. Для Jenkins существует множество плагинов, которые могут помочь вам в развертывании ваших приложений:

Для нашего приложения я настроил Jenkins с помощью Publish over SSH, который копирует успешно созданный WAR-файл на конечный сервер и затем выполняет сценарий, который выполняет резервное копирование и развертывание. Надеюсь это поможет!

pkhamre
источник
Мы используем Jenkins для CI, так что это, безусловно, интересный вариант, спасибо.
michaeltwofish
1

Puppet на самом деле не предназначен для развертывания, потому что при большом количестве файлов вы можете столкнуться с проблемами. Вы можете заглянуть в Capistrano для развертывания приложений.

http://rubyforge.org/projects/capistrano/

johnshen64
источник