Ответ 1
Здесь есть несколько категорий инструментов. Некоторые люди используют комбинацию инструментов из этих категорий. Иногда я использую, например, и Кукольный и Капистрано. См. Кукольный или Капистрано - используйте подходящий инструмент для работы для обсуждения.
Инструменты для создания сценариев, предназначенные для развертывания приложения:
Общий шаблон с инструментами этой категории состоит в том, что вы создаете файл script и/или config, часто с наборами команд, аналогичных Makefile, и инструмент будет передан в вашу производственную коробку, выполните проверку ваш источник и выполните любые другие шаги.
Инструменты в этой области обычно имеют возможности для отката к предыдущей версии. Таким образом, они проведут проверку источника на каталог release/, и создадут символическую ссылку от "current" до "release/", если все будет хорошо. Если есть проблема, вы можете вернуться к предыдущей версии, запустив команду, которая удалит "текущий" и свяжет ее с предыдущими версиями/каталогами.
- Capistrano происходит из сообщества Rails, но является универсальным. Пользователи Capistrano могут быть заинтересованы в deprec, наборе рецептов развертывания для Capistrano.
- Владелец Deployer является альтернативой Capistrano, снова из сообщества Rails.
- Напишите свою собственную оболочку script или Makefile.
Параметры для получения файлов в окне производства:
- Прямая проверка из источника. Не всегда возможно, если в ваших производственных коробках отсутствуют средства разработки, в частности инструменты для управления исходным кодом.
- Проверить источник локально, затем tar/zip. Используйте scp или rsync для копирования tarball. Это иногда предпочтительнее для чего-то вроде развертывания Amazon EC2, где сжатый tarball может сэкономить время/пропускную способность.
- Проверить исходный код локально, затем rsync его в поле производства.
Инструменты для упаковки
Используйте свою систему упаковки ОС для создания пакетов, содержащих файлы для вашего приложения. Создайте главный пакет, который имеет в качестве зависимостей другие необходимые вам пакеты. Примером этого является RubyWorks, используемая для развертывания стека Rails и пример приложения. Тогда это вопрос использования apt, yum/rpm, Windows msi или любого другого для развертывания данной версии. Откат включает удаление и переустановку старой версии.
Общие инструменты, предназначенные для установки приложений/конфигураций и поддержки набора систем
Эти инструменты специально не нацелены на проблему развертывания веб-приложения, а скорее на более общую проблему развертывания/поддержки приложений/конфигураций для набора серверов или целых рабочих станций компании. Они больше нацелены на системного администратора, чем на веб-разработчика, хотя они могут найти их полезными.
- Cfengine является инструментом в этой категории.
- Puppet стремится улучшить Cfengine. Он получил кривую обучения, но многие считают целесообразным выяснить, как это сделать. Как только вы это сделаете, каждый блок периодически проверяет центральный сервер и проверяет, что все в актуальном состоянии. Если кто-то редактирует файл или изменяет разрешение, это обнаруживается и исправляется. Таким образом, в отличие от инструментов развертывания выше, Puppet не только ставит файлы в нужное вам место, но и гарантирует, что они останутся такими.
- Chef немного моложе Puppet с аналогичным подходом.
- Smartfrog - еще один инструмент в этой категории.
- Ansible работает с обычными файлами YAML и не требует агентов, работающих на серверах, которыми он управляет
Для сравнения этих и многих других инструментов в этой категории см. статью Wikipedia, Сравнение программного обеспечения для управления конфигурацией с открытым исходным кодом.