Я много лет использую VirtualBox для создания среды разработки.
Многие мои коллеги говорят о Vagrant, и многие люди, кажется, очень взволнованы этим, но я просто не могу понять преимущества этого ... мне кажется, что это серия новых команд, которые нужно изучить, чтобы сделать то же самое вещи, которые я сделал с Virtualbox.
С VirtualBox я отлично устанавливаю и настраиваю среду, затем могу упаковать ее как OVA или что-то еще и поделиться ею с другими офисными пользователями. Вы можете сделать снимок в VirtualBox, если что-то пойдет не так.
Кукольный и шеф-повар на самом деле не являются частью Vagrant, они их собственные вещи, верно?
Так что да, какие преимущества конкретно предлагает Vagrant по сравнению с VirtualBox?
virtualbox
vagrant
Джон Хант
источник
источник
Ответы:
Это большой вопрос, поэтому я собираюсь разбить его на три части.
бродяга
Vagrant используется для настройки одной или нескольких виртуальных машин:
Обратите внимание, что он не устанавливает программное обеспечение и не настраивает компьютер после загрузки виртуальной машины и установки параметров VirtualBox. Думайте об этом как о скриптовом движке для VirtualBox.
Вот несколько причин, по которым я видел использование Vagrant вместо VirtualBox.
1. Настройте сети с несколькими виртуальными машинами с легкостью
Большая часть контента для опытных пользователей Vagrant, о котором я читал, была посвящена настройке нескольких виртуальных машин одновременно. Vagrant предоставляет вам один файл конфигурации для их настройки, позволяя запускать все из них одной командой.
Допустим, вы настроили три виртуальные машины для взаимодействия друг с другом, используя статические IP-адреса в подсети 192.168.1. *. Вы попадаете в местоположение, которое уже использует эту подсеть для раздачи IP-адресов, и теперь ваши виртуальные машины конфликтуют. С Vagrant вы можете просто отредактировать Vagrantfile и перезагрузить виртуальные машины, тогда как с VirtualBox вам придется открывать настройки для каждой виртуальной машины, если не загружать каждую виртуальную машину, и изменять их внутри.
2. Контроль источника
Поместив настройки в текстовый файл, он позволяет перевести конфигурацию под контроль исходного кода. Сделали некоторые изменения на прошлой неделе и случайно сломали изображение? Просто отмените изменения и перезагрузите виртуальную машину. Вы можете сделать это с помощью снимков VirtualBox, но это займет гораздо больше места, чем просто Vagrantfile.
3. Различные платформы
На таких сайтах, как http://vagrantbox.es, доступно большое количество коробок . Это позволяет вам пробовать различные ОС или дистрибутивы, применяя одну и ту же настройку для настройки похожих сред. Это может помочь с тестированием или добавлением поддержки для новых платформ, и это займет много времени при использовании только VirtualBox.
Существует множество аргументов в пользу использования программного обеспечения, а также использования снимков изображений. Для дополнительного обсуждения я укажу вам отличную статью Стивена Нельсона-Смита « Как построить 100 веб-серверов за день» .
источник
vmrun
команды, предлагаемой VMware, даже изменения IP-адреса или запуска сценария на гостевой машине!vmrun
чтобы управлять им. Я всегда использовал VirtualBox, и поэтому у меня нет опыта работы с бэкэндом VMWare.VboxManage
команде? virtualbox.org/manual/ch08.html Практически все, что вы упомянули, можно создать в виде сценария, передав конкретный ip / параметрvboxmanage controlvm
или аналогичную команду в сценарии оболочки, а затем управление версиями, что ... Итак, как всеvagrant
улучшитсяvirtualbox
?В дополнение к превосходному ответу Адама Вагрант связывает все вместе. Хотя Chef и Puppet (а также скрипты Salt и shell и любой другой поставщик, который вы хотите использовать) - это разные вещи, Vagrant связывает все это вместе и заставляет работать только с a
vagrant up
.Эта одна команда будет
Вам не нужно думать обо всем этом. Допустим, вы переключаетесь на другой проект, запущенный коллегой. Вы просто извлекаете код из своего репозитория и запускаете
vagrant up
, не беспокоясь о загрузке ISO-файлов или установке чего-либо, или задаваясь вопросом, какую версию какого дистрибутива вам нужно использовать для этого конкретного клиента, или есть ли у вас копия виртуальной машины, в которой уже есть все тебе нужно.Вам даже не нужно беспокоиться о том, настроили ли они что-либо с помощью Chef или Puppet или просто сценариев оболочки. (Ладно, так что вам, возможно, придется сделать
bundle install
или иным образом убедиться, что у вас все установлено, но все равно не имеет большого значения.)Связав все вместе и предоставив единый интерфейс для всего этого, можно значительно упростить все, кроме простейших вариантов использования. Сначала вам может показаться, что вы просто начинаете новый способ делать то, что вы уже делаете, но как только вы углубитесь в использование Vagrant, вы обнаружите, что можете сделать гораздо больше с гораздо меньшими усилиями. Это будет хорошо стоить начальные инвестиции времени.
источник
Способность интегрировать шеф-повара или марионетку с предоставлением ВМ является ключевым фактором. Большинство пользователей Vagrant скажут вам, что они запускают «vagrant provision» и иногда «vagrant reload» гораздо чаще, чем «vagrant up» или «vagrant destroy». Эти задачи показывают, что настоящая работа заключается не в том, чтобы вращать виртуальные машины вверх / вниз, а в том, чтобы «управлять» ими после факта.
Чтобы поставить лучший вопрос (заданный опытными пользователями Chef, во всяком случае), может быть, почему использовать Vagrant, а не нож с соответствующим плагином (скоро попадет в плагин virtualbox)? Например, передача значений аргументов, хранящихся в пакете данных, в плагин ножа (способ) более интеллектуальна, гибка и управляема, чем манипулирование одним гигантским Vagrantfile. Я обычно определяю свои «динамические» ресурсы, такие как количество процессоров, объем памяти, какую ОС развернуть, имя хоста, IP, маршруты и т. Д. В базах данных chef, так что мне не нужно постоянно менять свой рецепт; ). Редактирование пакета данных через веб-интерфейс Chef - действительно простая задача ввода данных, которую я могу дать большинству младших операторов. С Vagrantfile, вашим навсегда изменяющим кодом и, хотите верьте, хотите нет - разрывы кода - что в значительной степени гарантирует, что вы НЕ будете передавать простые изменения персоналу Operations,
Помимо факта, что у ножа еще нет плагина для virtualbox (хотя я предполагаю, что он есть в не слишком отдаленном будущем), уже есть плагины для большинства «корпоративных» продуктов виртуализации, включая vmware, xenserver и почти все основные «облака». провайдер, а также. Это означает, что нож намного превосходит то, что предлагает Vagrant, если / когда вы готовы выйти за пределы виртуальной коробки. На данный момент сообщество Chef, похоже, с радостью позволяет пользователям виртуальных ящиков хромать вместе с Vagrant, не интегрируя виртуальные apis для плагина ножа. Существует плагин «нож-бродяга», который позволяет использовать пакеты данных для передачи аргументов. Но это все еще требует бродячего программного обеспечения, и это - монолитный Vagrantfile, чтобы функционировать.
Итак, я пойду на конечности и скажу, что Вагрант определенно НЕ «лучше», чем повар с ножом; но необходимо (пока), если вы настаиваете на virtualbox и, возможно, «проще», чем управление шеф-поваром с помощью пакетов данных, при условии, что у вас достаточно простая среда для управления.
источник
Вот еще два варианта использования для разработчиков, которые упрощает vagrant (по сравнению с «обычным» VirtualBox). Я не видел этих вариантов использования, вызванных специально в предыдущих ответах.
Vagrant помогает поддерживать платформы разработки и производства как можно ближе друг к другу. В идеальном мире вы бы обеспечили производственную среду теми же сценариями, которые используются для предоставления виртуальной машины Vagrant, что сводит к минимуму неожиданности во время развертывания.
Интеграционные тесты и непрерывная интеграция: Vagrant легко контролируется с помощью тестов, и, следовательно, целые стеки из нескольких машин можно легко контролировать с помощью таких инструментов, как Jenkins, при выполнении тестовых прогонов.
Да, здесь можно использовать «простой» VirtualBox - но соглашения, используемые vagrant, упрощают настройку этих сценариев.
источник
Vagrant абстрагирует виртуальные машины, что позволяет легко переключать реализации виртуальных машин. Вы можете переключиться с Virtual Box на AWS или Digital Ocean. Это похоже на использование SQL вместо языка запросов к базе данных.
Vagrant позволяет разработчикам быстро настроить свою среду с помощью одной команды, и она точно такая же, как и у всех остальных. Это важно в крупных компаниях, где разработчики часто приходят и уходят. Это может сократить время на настройку с 3 дней до 1 часа.
+ Что сказал Адам.
(Я до сих пор не нашел использования для шеф-повара или кукольный, хотя ...)
источник