Существует ли инструмент развертывания (или набор инструментов), который поддерживает откат развертывания?
Я изучаю FluentMigrator. Что мне нравится в FM, так это то, что он поддерживает идею "Вперед" и "Назад" для миграций (то есть, вверх / вниз). Я считаю, что это не идеально в этом; Есть некоторые дыры. Тем не менее, это хорошо.
Это заставляет меня задуматься о том, существуют ли какие-либо инструменты развертывания (nant, msbuild или другие), которые поддерживают эту идею, касающуюся перемотки вперед и назад. Сценарий, в котором я его использую, - это развертывание веб-приложения со связанной базой данных.
В идеале я хотел бы настроить свое развертывание таким образом, чтобы в случае сбоя какой-либо части оно вернулось к предыдущей известной рабочей конфигурации. С FM это довольно легко сделать (но есть неровности), так что это покрывает БД. Как насчет файлов, которые составляют веб-приложение? Есть ли средства для развертывания, поддерживающие это?
Развертывание на Windows Server. Предположим, что я не могу внести какие-либо изменения на сервер.
3 ответа
Я не знаю каких-либо ориентированных на Microsoft автоматизированных инструментов обеспечения / развертывания, таких как Capistrano. Вот некоторые инструменты, о которых я слышал, но никогда не использовал:
- MSDeploy, для развертывания веб-приложения.
- Microsoft Deployment Services, для управления конфигурацией операционной системы
- Microsoft System Center Configuration Manager
- BladeLogic
- Операционный центр HP
Примерно три месяца назад мы проводили развертывание / подготовку с использованием пользовательских сценариев MSBuild. После подготовки сервера происходит автоматическое развертывание с использованием Robocopy для копирования файлов в общую папку на сервере приложений, обновления измененных двоичных файлов приложений и файлов разметки. У нас никогда не было необходимости откатывать какие-либо из наших развертываний, но, поскольку наши сценарии являются пользовательскими, мы могли бы написать логику, если бы нам это понадобилось.
MSBuild - ужасный язык развертывания / предоставления. В течение последних трех месяцев мы писали все новые сценарии и переносили их в PowerShell. Это чудесно. В версии 2 есть поддержка запуска команд на удаленных серверах, таких как SSH. Мы еще не использовали эту функциональность, но я с нетерпением жду возможности отправить сценарии установки на удаленный сервер для одновременной подготовки и развертывания.
Мы использовали Git для наших развертываний в течение последних 6 месяцев.
Вот весь процесс:
- CI сервер строит проект
- CI-сервер регистрирует его в локальном git-репозитории.
- CI-сервер вносит изменения в централизованное хранилище git.
- Пользователь создает пустой репозиторий на живом сервере
- Пользователь добавляет центральный репозиторий git к удаленным
- Пользователь тянет последнюю версию через https (не нужно открывать какие-либо порты)
Это много, чтобы настроить в начале, но после установки он отлично работает. Развертывание занимает несколько секунд, поскольку копируются только измененные файлы. Еще одна замечательная особенность этого метода заключается в том, что git хранит историю изменений, поэтому откат довольно прост. Вы также можете откатить несколько ревизий, и это делается прямо на живом сервере. Если что-то идет не так, как надо, это очень быстро.
Также вы можете сэкономить время, если вы используете хост-сервис git (github) для своего центрального хранилища.
Это очень краткое описание, но я могу дать вам больше информации, если хотите.
Конечно! Мой любимый это Capistrano. Первоначально он был построен для Ruby, но я обнаружил, что он работает так же хорошо для других языков.