Здесь есть несколько категорий инструментов. Некоторые люди используют комбинацию инструментов из этих категорий. Иногда я использую, например, и Кукольный и Капистрано. См. Puppet or Capistrano - Use the Right Tool for the Job для обсуждения.
сценариев Средства, направленные на Развертывание приложения:
Общая картина с инструментами в этой категории является то, что вы создаете сценарий и/или конфигурационный файл, часто с наборами команд, похожих на Makefile, и инструмент передаст ssh в вашу производственную коробку, выполнит проверку вашего источника и выполнит любые другие действия.
Инструменты в этой области обычно имеют возможности для отката к предыдущей версии. Таким образом, они проведут проверку источника на каталог release /, и создадут символическую ссылку от «current» до «release /», если все будет хорошо. Если есть проблема, вы можете вернуться к предыдущей версии, выполнив команду, которая удалит «текущий» и свяжет ее с предыдущими версиями/каталогами.
- Capistrano происходит из сообщества Rails, но является универсальным. Пользователи Capistrano могут быть заинтересованы в deprec, наборе рецептов развертывания для Capistrano.
- Vlad the Deployer является альтернативой Capistrano, снова из сообщества Rails.
- Напишите свой собственный сценарий оболочки или Makefile.
Варианты для получения файлов в окне производства:
- Прямая выписка из источника. Не всегда возможно, если в ваших производственных коробках отсутствуют средства разработки, в частности инструменты для управления исходным кодом.
- Проверьте источник локально, затем введите tar/zip. Используйте scp или rsync для копирования tarball. Это иногда предпочтительнее, например, для развертывания Amazon EC2, где сжатый tarball может сэкономить время/пропускную способность.
- Проверьте источник на месте, затем перепрограммируйте его в коробку.
Упаковка Инструменты
Используйте систему упаковки вашей операционной системы, чтобы генерировать пакеты, содержащие файлы для вашего приложения. Создайте главный пакет, который имеет в качестве зависимостей другие необходимые вам пакеты. Примером этого является система RubyWorks, используемая для развертывания стека Rails и примерного приложения. Затем нужно использовать apt, yum/rpm, Windows msi или что-то другое для развертывания данной версии. Откат включает удаление и переустановку старой версии.
Общие инструменты, направленные на установке приложений/Configs и поддержка множества систем
Эти инструменты конкретно не нацелены на проблему развертывания веб-приложений, а более общую задачу развертывания/поддержания Программы/Конфигурации для набора серверов или рабочих станций всей компании. Они больше нацелены на системного администратора, чем на веб-разработчика, хотя либо могут найти их полезными.
- Cfengine является инструментом в этой категории.
- Puppet Цель - улучшить работу Cfengine. У него есть кривая обучения, но многие считают, что стоит потратить время, чтобы выяснить, как это сделать. Как только вы это сделаете, каждый блок периодически проверяет центральный сервер и проверяет, что все в актуальном состоянии. Если кто-то редактирует файл или изменяет разрешение, это обнаруживается и исправляется.Таким образом, в отличие от инструментов развертывания выше, Puppet не только ставит файлы в нужное вам место, но и гарантирует, что они останутся такими.
- Chef немного моложе, чем Кукольный с аналогичным подходом.
- Smartfrog - еще один инструмент в этой категории.
- Ansible работает с простыми YAML файлов и не требует агентов, работающих на серверах он управляет
Для сравнения этих и многих других инструментов в этой категории можно найти в статье Википедии, Comparison of open source configuration management software.
Wow 7 лет спустя ... В настоящее время существует множество инструментов, специально предназначенных для автоматизации приложений. Вот отличный стартовый ресурс, чтобы узнать больше: https://en.wikipedia.org/wiki/Application_release_automation – 2016-06-27 20:51:57