Можно ли запустить машину Братья и сестры из гостя? - PullRequest
0 голосов
/ 24 октября 2018

При настройке нашей среды автоматизации мы находимся в точке, где мы предполагаем следующее:

Наш сервер 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 обеспечивает обычные преимущества обслуживания: простую миграцию, масштабирование, сброс
  • Безопасность и изоляция: если работникскомпрометирован, мы действительно не хотим, чтобы это была физическая машина, которая поддерживает многие другие критические процессы.

1 Ответ

0 голосов
/ 25 октября 2018

Vagrant не предназначен для этого, и это невозможно сделать.

Как вы также отметили, Docker лучше справляется с этой работой, но DiD может быть излишним, вместо этого используйте свой собственный хост для запускаСервер Дженкинса внутри контейнера Docker.Передайте сокет Docker хоста этому контейнеру, и всякий раз, когда вам понадобится работник Jenkins, запускайте новый контейнер на вашем сервере Jenkins.

Все контейнеры будут работать непосредственно на хосте, и им будет легче управлять.

См. Ниже в качестве отправной точки https://getintodevops.com/blog/the-simple-way-to-run-docker-in-docker-for-ci

...