Как развертывание в производстве осуществляется из локальной среды разработки VirtualBox/Vagrant?
Недавно я начал читать о создании среды разработки с помощью программного обеспечения для виртуализации (я новичок), и кажется, что "инфраструктура как код" - действительно мощная концепция.
Мне очень нравится структура рабочего процесса, описанная здесь:
- Тот же базовый образ VirtualBox используется вокруг команды
- Vagrant используется для быстрого "создания" и "предоставления" такого изображения в нужную конфигурацию с помощью
- Рецепты шеф-повара (или кукольного), которые являются единственной частью кода, необходимо поставить под контроль версий.
Однако я все еще не совсем понимаю, как код передается и развертывается на серверах Production.
Как я понимаю, общий способ сохранения сред DEV и PROD идентичен, чтобы управлять экземпляром сервера Production как просто еще один виртуальный образ, который должен быть подготовлен шеф-поваром. На сервере Production я могу установить ту же самую ОС, как и я (и команда), ежедневно использую VirtualBox-Vagrant-Chef.
Но сервер Production может иметь аппаратное обеспечение, которое отличается от оборудования в виртуальной гостевой ОС, и это может снова привести к несоответствиям.
Итак, вот вопрос:
Какова известная и распространенная практика передачи и развертывания кода на сервер Production из среды разработки, которая управляется с помощью инструментальной привязки VirtualBox-Vagrant-Chef? Поддерживает ли эта практика любое непрерывное развертывание?
[Изменить]: Примечание. Существует ли практика запуска того же экземпляра виртуальной машины, который был предоставлен Chef/Vagrant на сервере Production, как показано на диаграмме
Ответы
Ответ 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
}
Вопрос о непрерывной доставке в этом контексте слишком широк. Я думаю, что ответ будет "да", за что он стоит.