При настройке нашей среды автоматизации мы находимся в точке, где мы предполагаем следующее:
Наш сервер Jenkins связывается с работником Jenkins.Этот работник работает в бродячей машине.Затем рабочий Jenkins запускает другие машины Vagrant в качестве сборщиков и восстанавливает их до заданного снимка после завершения сборки.
Сложность заключается в том, что рабочий Jenkins, который уже является гостевой машиной Vagrantна физическом хосте следует запустить другую гостевую машину Vagrant непосредственно на хосте, а не внутри себя (что было бы сложно и не оптимизировано с помощью провайдера VirtualBox).
Возможно ли это?Если да, то как?
Примечание: чтобы прояснить ситуацию, запуск соседних контейнеров из контейнера возможен с помощью Docker, следуя подходу, описанному в этом сообщении в блоге: http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/ (см. Раздел решение )
Редактировать (некоторые обоснования):
Мы знаем, что возможно добиться запуска контейнера-брата с помощью Docker (см. предоставленную ссылку), но покамы не можем использовать Docker, потому что виртуальная машина, которую мы должны запускать в качестве сборщиков, должна быть как OS X, так и Windows.
Некоторым предложением может быть назначение работника Jenkins средой хоста, откуда она будет тривиально порождать Vagrantстроители.Тем не менее, мы настоятельно рекомендуем избегать этого по нескольким причинам:
- Контейнерный рабочий Jenkins обеспечивает обычные преимущества обслуживания: простую миграцию, масштабирование, сброс
- Безопасность и изоляция: если работникскомпрометирован, мы действительно не хотим, чтобы это была физическая машина, которая поддерживает многие другие критические процессы.