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