У меня есть сервер марионеток / бригадиров, работающий на Debian 7, для управления моими системами. Я использую версию 3.7 сообщества puppet and foreman 1.6.0. Я использую среду каталогов.
На данный момент я использую довольно сложный рабочий процесс для моих самописных модулей: их создание в моей среде разработки, которая контролируется подрывной деятельностью, а затем их экспорт во внешний каталог, создание из них марионеточного модуля (сборка марионеточного модуля ...) и установка этого в производстве. Я рассматривал возможность разветвления / пометки их в продакшн с помощью Subversion, но тогда исключил это по причинам, которые не помню.
Тем временем я выучил немного git и предпочел бы использовать для этого git вместо subversion. Теперь у меня вопрос, есть ли для этого лучшие практики? Я могу представить как минимум два подхода, у каждого из которых есть свои плюсы и минусы. Можно было бы поставить разработку среды под контроль версий, а затем клонировать / ветвить ее в производство. Во-вторых, сделать репозиторий git для каждого модуля и клонировать их в среду.
Как я уже сказал, я новичок в git, поэтому я понятия не имею о его сильных и слабых сторонах. Также я использую только марионетку и прораб около 8 месяцев.
Привет, Кристоф
Ответ действительно зависит от того, насколько вы хотите управлять версиями. Есть несколько основных подходов:
Поместите все в единый плоский репозиторий Git и просто клонируйте его на своих мастерах (или узлах, если вы работаете без мастера).
Это, безусловно, самый простой вариант, но он означает, что у вас будет несколько копий одного и того же модуля в вашей производственной среде и среде разработки (хотя вы можете обойти это с помощью символических ссылок).
Поместите ваш основной код Puppet в один репозиторий Git с подмодулями Git, указывающими на ваши пользовательские модули. Развертывание такое же, как и выше, с добавлением --recursive
к git clone
.
Преимущество этого подхода в том, что вы можете легко ссылаться на внешние модули (PuppetLabs Apache, например), и относительно легко внести изменения в восходящий поток, но у вас также есть накладные расходы, связанные с подмодулями Git, которые, как известно, являются беспорядочными.
Запустите свою собственную кукольную кузницу и используйте Библиотекарь-марионетка или R10K для управления установкой ваших модулей.
Это имеет то преимущество, что вы можете полностью контролировать версии ваших модулей через СемВер не публикуя их публично - хотя создание собственной Кузницы Марионеток по-прежнему считается некоторыми «передовым краем».