Потяните развертывание в среде Windows - PullRequest
4 голосов
/ 02 августа 2010

Я ищу способ настройки развертывания по запросу, в отличие от традиционной модели принудительного развертывания в Windows.

Оптимальная ситуация:

  • Развернуть файл (s) к главному серверу
  • Дочерний сервер проверит наличие обновлений на главном сервере за определенный промежуток времени или времени.
  • Если главный сервер содержит обновление, он будетзагрузить обновление и / или выполнить скрипт (что-то вроде nant?)

Решение должно быть максимально легким и работать в среде Windows.

Я посмотрел на Шеф-повар и SmartFrog , но не подходит для этой конкретной ситуации.

Редактировать: Есть несколько частейразвертываемое программное обеспечение.Это сценарии базы данных, службы Windows и веб-сайт.У каждого ребенка будет свой уникальный сценарий, поскольку его требования и детали аутентификации отличаются от остальных.

Редактировать 2: Пока что люди придумали отличные ответы, но конечное решение действительно делаетдолжны быть в безопасности, работать внутри и все это происходит одновременно.Это связано с соответствием, отраслевыми нормами и проблемами версий (например, сервер БД не синхронизирован со службами).Конечным решением, которое я имею в виду, было бы что-то вроде сервера FPT на главном сервере и Nant, выполняющегося на дочерних процессах для выполнения процедур установки (запуск, остановка служб, установка сценариев sql, ведение журнала установок).Это самая близкая вещь, доступная в настоящее время, но она не идеальна, поскольку nant работает на основе push (выполняется только тогда, когда кто-то или программа, например, cruisecontrol, запускает скрипт).Я уверен, что должно быть решение для правильного развертывания PULL для Windows.Обновление Windows и APT в Linux являются отличными примерами развертывания по запросу, если вы можете выполнить развертывание на нескольких серверах одновременно.

Ответы [ 7 ]

1 голос
/ 15 августа 2010

Вы говорите, что хотите выполнить развертывание программного обеспечения Windows, и все же говорите о языках сценариев сборки, таких как NAnt.Если бы это был я, я бы написал пакет установщика Windows, используя InstallShield, и воспользовался бы его службой UpdateManager, чтобы клиенты получали обновления с вашего сервера обновлений.Эти инструменты существуют и проверены в течение длительного времени и будут намного безопаснее, чем все, что вы изобретаете.

0 голосов
/ 15 августа 2010

Я слышал об этой ситуации раньше, когда разговаривал с кем-то, когда был в Сент-Луисе на «вечеринке по случаю дня рождения» их веб-сайта.Интересно, это был ты?

В любом случае, я бы использовал для этого Web Deployment Tool (MSDeploy) .MSDeploy больше похож на инструмент синхронизации, чем на что-либо еще.Концепция в том, что у вас есть источник и цель, вы хотите синхронизировать их.Если вы выполняете обычное принудительное развертывание, ваш сервер сборки будет синхронизировать выходные данные какой-либо сборки с каждым целевым сервером.Если вы хотите выполнить развертывание по запросу, просто перетащите нужные файлы в общую папку (вы называете этот главный сервер), а затем ваш клиентский компьютер может синхронизироваться с этим главным сервером.

Вот еще некоторыедетали, которые вы упомянули в своем вопросе:

Развертывание файлов на главном сервере Ваш сервер сборки может использовать MSDeploy для развертывания файлов на главном сервере

Дочерний сервер будетпроверьте, было ли у мастера обновление в данный момент или интервал времени. Прямая поддержка для этого отсутствует, но на самом деле здесь есть две вещи. Thing one : MSDeploy можно запустить из сценария (.cmd / PowerShell / MSBuild / etc), и он может определить, существует ли более новая версия.Я бы сделал это, опустив файл версии на верхний уровень вашей выходной папки.Затем, когда ваш скрипт запускается, просто прочитайте, какая версия находится на сервере.Если доступно более новое, запустите новое новое развертывание. Вещи два : MSDeploy поддерживает пошаговое развертывание, поэтому даже если вы начнете новое развертывание, оно просто не внесет никаких изменений.Это сложно, когда вы начинаете говорить о развертывании БД, хотя в вашем случае, вероятно, это неуместно, я бы выбрал вариант Thing one .

Если главный сервер содержитобновление, затем оно загрузит обновление и / или выполнит скрипт Это то, что msdeploy.exe собирается сделать для вас.

Другие связанные элементы

  • Инкрементная публикация: если ваша сеть содержит 1000 файлов, но только 5 изменились, то будут развернуты только эти 5
  • Настройка: MSDeploy поддерживает параметризацию, поэтому, когда клиент запускает синхронизацию, вы можете указать конкретные значениядля этого клиента.С их помощью вы можете изменять все типы файлов, включая файлы web.conig / .xml / text text / etc.Вы даже можете предоставить пользовательские настройки IIS
  • Аутентификация: вы можете использовать обычную аутентификацию Windows, если вы используете IIS 7, вы можете создавать WMSvc пользователей и использовать их.
  • Безопасность:WMSvc может быть использован для этого

Подходит ли это вам?

0 голосов
/ 14 августа 2010

Я использовал комбинацию круиз-контроля .net и subversion для этого точного использования с большим успехом в прошлом.

Subversion безопасна и будет действовать в качестве главного сервера.Круиз-контроль .net полностью поддерживает как subversion, так и nant.Конечно, это может сделать намного больше.У нас была очень сложная логика из-за отрасли, в которой мы работали, и ее требований (полезности).

0 голосов
/ 14 августа 2010

у вас работает контроллер домена? Так что вы можете "рекламировать" их? Не легче, что это. Измените эту строку, чтобы ваш путь отображал пользовательский интерфейс, но он также должен быть доступен для сценариев - как минимум в PowerShell.

"C: \ Windows \ SysWOW64 \ rundll32.exe" "C: \ Windows \ SysWOW64 \ shell32.dll", # 44 "C: \ Windows \ SysWOW64 \ CCM \ SMSRAP.cpl", запуск объявленных программ

0 голосов
/ 13 августа 2010

Windows Live Sync

Задумывались ли вы над Windows Live Sync?

Это бесплатно, и все, что вам нужно сделать, это настроить две папки.Один на вашем главном сервере и один на вашем дочернем сервере.

После настройки все файлы будут автоматически синхронизированы.

Обновление должно быть очень простым, как только вы обновите вашу мастер-папку, она будет автоматически реплицирована в дочернюю часть.

Это полностью запущено и забыто.

Я используюэта система (одна развернута на сервере) с шестью «дочерними» узлами, легко синхронизирующими 1000 файлов в день.

Edit 1:

Забыл упомянуть, файлызашифрованы и используют обратное соединение, поэтому настройка маршрутизатора / брандмауэра отсутствует.

0 голосов
/ 12 августа 2010

Пару лет назад я внедрил систему, которая сделала то, что вы ищете.

Для клиентского приложения мы использовали развертывание ClickOnce, которое просто отлично работает. Для служб Windows и веб-сайтов нам пришлось внедрить собственную систему, потому что мы не могли найти ничего, что могло бы работать для нас.

Для базы данных, в которой мы пробовали репликацию (sql2005), это не сработало, так как потребовалось много времени и мощности процессора. Мы решили сделать резервную копию и восстановить данные (все это было только для чтения на клиентских серверах)

В двух словах

1) Главный сервер будет содержать несколько zip-файлов с новой версией веб-сервисов, веб-сайтов и баз данных.

2) Служба клиентских серверов Windows ежедневно сканирует главный сервер (используя ftp) на наличие новых версий программного обеспечения.

3) Когда это будет найдено - удалить службу Windows и заменить файлы и переустановить его - заменить файлы сайта - заменить базу данных

0 голосов
/ 02 августа 2010

Я не на 100% уверен в типе приложения, которое нужно развернуть, но если это приложение Windows Forms для распространения среди клиентов / конечных пользователей, то вы смотрели на ClickOnce ?Здесь есть режимы автоматического опроса и снятия дельты с клиентов.Но похоже, что вы распространяете на другие серверы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...