Подтвердить что ты не робот

Как развертывание в производстве осуществляется из локальной среды разработки VirtualBox/Vagrant?

Недавно я начал читать о создании среды разработки с помощью программного обеспечения для виртуализации (я новичок), и кажется, что "инфраструктура как код" - действительно мощная концепция.

Мне очень нравится структура рабочего процесса, описанная здесь:

  • Тот же базовый образ VirtualBox используется вокруг команды
  • Vagrant используется для быстрого "создания" и "предоставления" такого изображения в нужную конфигурацию с помощью
  • Рецепты шеф-повара (или кукольного), которые являются единственной частью кода, необходимо поставить под контроль версий.

Однако я все еще не совсем понимаю, как код передается и развертывается на серверах Production.

Как я понимаю, общий способ сохранения сред DEV и PROD идентичен, чтобы управлять экземпляром сервера Production как просто еще один виртуальный образ, который должен быть подготовлен шеф-поваром. На сервере Production я могу установить ту же самую ОС, как и я (и команда), ежедневно использую VirtualBox-Vagrant-Chef.

Но сервер Production может иметь аппаратное обеспечение, которое отличается от оборудования в виртуальной гостевой ОС, и это может снова привести к несоответствиям.

Итак, вот вопрос:

Какова известная и распространенная практика передачи и развертывания кода на сервер Production из среды разработки, которая управляется с помощью инструментальной привязки VirtualBox-Vagrant-Chef? Поддерживает ли эта практика любое непрерывное развертывание?

[Изменить]: Примечание. Существует ли практика запуска того же экземпляра виртуальной машины, который был предоставлен Chef/Vagrant на сервере Production, как показано на диаграмме

4b9b3361

Ответ 1

Я автор статьи, которую вы связали, поэтому мой 0.02

Если я правильно понял ваш вопрос, вы не перемещаете vms из dev в production, вы создаете повторяемый процесс, который позволяет создавать одно и то же конечное состояние (OS + config + app) снова и снова, неважно где пункт назначения.

Используя бродягу, вы гарантируете, что ваши разработчики используют ту же ОС, что и ваши производственные серверы, независимо от того, какую ОС они используют для разработки.

Используя Puppet/Chef, вы гарантируете, что ОС настроена одинаково, независимо от того, работает ли он в vm с помощью Vagrant, vm в производстве, облако vm или голое металлическое оборудование. Он не обязательно должен быть виртуальным.

Ответ 2

В случае с Puppet (скорее всего, и шеф-повар делает это тоже), вы можете создать манифест (рецепт) таким образом, чтобы они вели себя по-разному в вашей бродячей среде, например.

if $::virtual != "virtualbox" { # not in vagrant
    include sysctl_tuning
}

Вопрос о непрерывной доставке в этом контексте слишком широк. Я думаю, что ответ будет "да", за что он стоит.