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