Управление svn репо с помощью puppet/mcollective
Мне интересно услышать, как люди управляют развертыванием кода и как они связывают его со своей системой оркестровки.
Я не смог найти хороший модуль марионеточной подрывной деятельности, который работает так, как я хочу. Скажем, я разделил свои серверы приложений на две группы, A и B, и развернул их в открытом виде. То, что я изобразил, имеет две переменные, которые определяют, какую ревизию должна использовать каждая группа.
$groupA_svn_tag = 'myCode-1.0'
$groupB_svn_tag = 'myCode-1.0'
Затем, когда я хочу выполнить развертывание, я отключаю groupA (в моем балансировщике нагрузки) и увеличиваю переменную tag.
$groupA_svn_tag = 'myCode-1.1'
$groupB_svn_tag = 'myCode-1.0'
Я жду, когда кукла сделает свое дело (svn switch myCode-1.1) и переверну балансировщик и приращение группы B.
Возможно, это злоупотребление марионеткой, поскольку это скорее инструмент "держать серверы в таком состоянии". Должен ли я использовать mcollective для этого? Как другие люди подходят к этой проблеме?
2 ответа
Большинство процессов выпуска, с которыми я сталкивался, представляют собой развернутые артефакты, а не прямые извлечения из svn. Затем управление начинает выбирать, какую версию файла (будь то jar, tar, rpm и т. Д.) В репозитории развернуть, а не играть с тегами svn, что делается в процессе сборки выпуска. Если мой опыт в целом верен, то, возможно, это может способствовать отсутствию поддержки того, что вы пытаетесь использовать в SVN? Нужны комментарии от других.
Концепция того, что вы делаете, звучит здраво, но, как уже упоминалось. Я бы сделал это, отказав группе А, развернув артефакт "myCode-1.1.tar.gz" в группе А. Затем повторите для группы В.
Даже если ваш репозиторий svn, вам не нужно связываться с тегами во время процесса развертывания, просто посмотрите в HEAD требуемую версию артефакта, которая может быть частью манифест-манипулятора, который вы применяете к группе.
Я думаю, что ваша процедура хороша, и вы должны попытаться использовать MCollective, чтобы управлять марионеточными прогонами и по возможности вынимать узлы из балансировщика. Мы широко используем SVN для нашего программного обеспечения и конфигураций и специально помечаем каждое изменение / выпуск, а затем позволяем puppet делать свое дело с помощью vcsdeploy ( http://www.practicalclouds.com/content/guide/pclouds-vcsdeploy-deploy-stuff).
С уважением
Дейв