Назад | Перейти на главную страницу

Как управлять конфигурацией и автоматическим развертыванием 20 виртуальных машин

У меня есть сервер сборки TeamCity с примерно 20 «агентами сборки», как с Windows, так и с MacOS.

Часто мне нужно установить более новую версию XCode или VisualStudio или какой-либо другой инструмент. Делать это вручную на всех машинах скучно и чревато ошибками. Я пытаюсь выяснить, как лучше всего добиться следующего:

Задания, которые выполняют эти машины, относительно тяжелые, полностью занимают 8 ядер и очень тяжелы по вводу-выводу. Ничего страшного, если решение включает в себя трату денег.

http://www.puppetlabs.com/

Я не уверен в степени поддержки Windows, но в FAQ упоминается базовая поддержка Windows в самой последней версии. Этот инструмент был бы идеальным, если бы мы говорили о Linux, поэтому, если реализация Windows сопоставима, это, вероятно, было бы идеально. Что касается компьютеров Mac, они основаны на BSD, поэтому вы, вероятно, также можете использовать Linux-сторону марионетки с ними.

Я сделал то же самое, что вы упомянули, с Linux, используя Puppet. В puppet вы создаете политику сайта, декларируя, как все должно сочетаться. В обычной настройке у вас есть мастер Puppet с политикой сайта, которая опрашивается с частотой с рабочих станций \ машин марионеток. «Марионетки» смотрят, каким требованиям они выполнили, а затем узнают, что им следует делать в соответствии с политикой Хозяина Марионеток. Последовательные обновления были бы простой модификацией политики Мастера Марионеток, но относитесь к этому с недоверием. Я не знаю степени функциональности окон.


Еще один популярный - CfEngine: http://www.cfengine.org/

http://novosial.org/cfengine/windows/

http://novosial.org/cfengine/macosx/

Я не использовал CfEngine, но он довольно популярен.

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

Для чего нужно иметь столько отдельных машин для сборки? Чтобы обеспечить изоляцию проектов кода друг от друга или увеличить скорость сборки за счет дополнительных ресурсов? Или машины сборки на самом деле являются клиентскими рабочими станциями в вашей сети, которые используются для дополнительных целей, помимо сборки?

Если нужно сохранить изолированность сред сборки, виртуализация - хороший способ добиться успеха. Вы сможете превратить свои 20 машин для сборки в отдельные виртуальные машины без лишних хлопот по покупке / настройке оборудования для каждой из них.

С другой стороны, если речь идет о масштабировании производительности, объединение машин сборки с виртуальными машинами не имеет большого смысла, поскольку виртуальные машины на хосте борются за ЦП, оперативную память и доступность диска этого хоста. Вам лучше добавить максимальное количество ядер ЦП, Гб ОЗУ и дисковых шпинделей по мере необходимости, добавив дополнительные единицы оборудования.

Что касается требования обновлять пакеты программного обеспечения на всех машинах: - Для унифицированного управления программным обеспечением на нескольких машинах Windows без повторного развертывания ОС воспользуйтесь Microsoft System Center Config Manager и System Center Essentials. Они звучат примерно так, как вам нужно: http://www.microsoft.com/systemcenter/en/us/products.aspx - Для развертывания всей системы, когда вы вносите изменения в системный образ, а затем повторно развертываете этот образ на своих машинах сборки, вы можете сделать это с помощью виртуальных машин, используя функции, встроенные в любой продукт виртуализации, который вы используете - «Шаблоны» на ESX или Hyper-V. В качестве альтернативы вы можете взглянуть на решение для сборки PXE-загрузки, такое как службы развертывания Windows.

Каким бы путем вы ни пошли с этим, вашей самой большой проблемой, вероятно, будет смешанное использование Windows и MacOS для ваших машин сборки. Стандартная ОС для всех из них в значительной степени является предпосылкой для возможности обновлять их все единым образом.

Продукт похож на Acronis Snap Deploy позволит вам развертывать обновления для вашей IDE и т. д. без особой головной боли. Вы также можете настроить сборку для определенных конечных точек, поэтому вы можете предварительно загрузить драйверы устройств, но нет совместимости с OSX (хотя вы можете попробовать запустить ее из Boot Camp или чего-то еще).

Если у вас было время немного поиграть, вы можете попробовать бесплатное решение, например WPKG.