219

Я много лет использую VirtualBox для создания среды разработки.

Многие мои коллеги говорят о Vagrant, и многие люди, кажется, очень взволнованы этим, но я просто не могу понять преимущества этого ... мне кажется, что это серия новых команд, которые нужно изучить, чтобы сделать то же самое вещи, которые я сделал с Virtualbox.

С VirtualBox я отлично устанавливаю и настраиваю среду, затем могу упаковать ее как OVA или что-то еще и поделиться ею с другими офисными пользователями. Вы можете сделать снимок в VirtualBox, если что-то пойдет не так.

Кукольный и шеф-повар на самом деле не являются частью Vagrant, они их собственные вещи, верно?

Так что да, какие конкретно преимущества предлагает Vagrant по сравнению с VirtualBox?

5 ответов5

147

Это большой вопрос, поэтому я собираюсь разбить его на две части.

бродяга

Vagrant используется для настройки одной или нескольких виртуальных машин:

  • Импорт готовых изображений (называемых "коробками")
  • Настройка параметров виртуальной машины (IP-адрес, имена хостов, переадресация портов, память и т.д.)
  • Запуск программного обеспечения, такого как Puppet или Chef

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

Вот несколько причин, по которым я видел использование Vagrant вместо VirtualBox.

1. Настройте сети с несколькими виртуальными машинами с легкостью

Большая часть контента для опытных пользователей Vagrant, о котором я читал, была посвящена настройке нескольких виртуальных машин одновременно. Vagrant предоставляет вам один файл конфигурации для их настройки, что позволяет вам запускать все из них с помощью одной команды.

Допустим, вы настроили три виртуальные машины для взаимодействия друг с другом, используя статические IP-адреса в подсети 192.168.1. *. Вы попадаете в местоположение, которое уже использует эту подсеть для раздачи IP-адресов, и теперь ваши виртуальные машины конфликтуют. С Vagrant вы можете просто отредактировать Vagrantfile и перезагрузить виртуальные машины, тогда как с VirtualBox вам придется открывать настройки для каждой виртуальной машины, если не загружать каждую виртуальную машину, и изменять их внутри.

2. Управления источником

Поместив настройки в текстовый файл, он позволяет перевести конфигурацию под контроль исходного кода. Сделали некоторые изменения на прошлой неделе и случайно сломали изображение? Просто отмените изменения и перезагрузите виртуальную машину. Вы можете сделать это с помощью снимков VirtualBox, но это займет гораздо больше места, чем просто Vagrantfile.

3. Различные платформы

На таких сайтах, как http://vagrantbox.es, доступно большое количество коробок. Это позволяет вам пробовать различные ОС или дистрибутивы, применяя одну и ту же настройку для настройки похожих сред. Это может помочь с тестированием или добавлением поддержки на новые платформы, и это займет много времени при использовании только VirtualBox.

Есть много аргументов в пользу использования программного обеспечения, а также использования снимков изображений. Для дополнительного обсуждения я укажу вам отличную статью Стивена Нельсона-Смита « Как построить 100 веб-серверов за день».

26

В дополнение к прекрасному ответу Адама, Вагрант связывает все вместе. Хотя Chef и Puppet (а также скрипты Salt и shell и любой другой поставщик, который вы хотите использовать) - это разные вещи, Vagrant связывает их все вместе и заставляет работать просто vagrant up .

Эта одна команда будет

  1. просто запустите ВМ, если это все, что нужно, но это также
  2. создайте коробку из указанного базового блока, если это еще не сделано, но если на вашем компьютере даже нет базового блока, он сначала
  3. извлеките его из URL и загрузите на свой компьютер.

Вам не нужно думать обо всем этом. Допустим, вы переключаетесь на другой проект, запущенный коллегой. Вы просто извлекаете код из своего репозитория и запускаете vagrant up , не беспокоясь о загрузке ISO-файлов или установке чего-либо, или задаваясь вопросом, какую версию какого дистрибутива вам нужно использовать для этого конкретного клиента, или есть ли у вас копия виртуальной машины, которая уже есть есть все что нужно.

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

Связав все воедино и предоставив единый интерфейс для всего этого, можно значительно упростить все, кроме самых простых вариантов использования. Сначала вам может показаться, что вы просто начинаете новый способ делать то, что вы уже делаете, но как только вы углубитесь в использование Vagrant, вы обнаружите, что можете сделать гораздо больше с гораздо меньшими усилиями. Это будет хорошо стоить начальные инвестиции времени.

8

Вот еще два варианта использования, которые упрощает vagrant (по сравнению с "обычным" VirtualBox). Я не видел этих вариантов использования, вызванных специально в предыдущих ответах.

  1. Vagrant помогает поддерживать платформы разработки и производства как можно ближе друг к другу. В идеальном мире вы бы обеспечили производственную среду теми же сценариями, которые используются для предоставления виртуальной машины Vagrant, что сводит к минимуму неожиданности во время развертывания.

  2. Интеграционные тесты и непрерывная интеграция: Vagrant легко контролируется с помощью тестов, и, следовательно, целые стеки из нескольких машин можно легко контролировать с помощью таких инструментов, как Jenkins, при выполнении тестовых прогонов.

Да, здесь также можно использовать "простой" VirtualBox - но соглашения, используемые vagrant, упрощают настройку этих сценариев.

8

Способность интегрировать шеф-повара или марионетку с предоставлением ВМ является ключевым фактором. Большинство пользователей Vagrant скажут вам, что они запускают «vagrant provision» и иногда «vagrant reload» гораздо чаще, чем «vagrant up» или «vagrant destroy». Эти задачи показывают, что настоящая работа заключается не в том, чтобы вращать виртуальные машины вверх / вниз, а в том, чтобы «управлять» ими после факта.

Чтобы поставить лучший вопрос (заданный опытными пользователями Chef, во всяком случае), может быть, почему использовать Vagrant, а не нож с соответствующим плагином (скоро попадет в плагин virtualbox)? Например, передача значений аргументов, хранящихся в пакете данных, в плагин ножа (способ) является более разумной, гибкой и управляемой, чем манипулирование одним гигантским Vagrantfile. Я обычно определяю свои «динамические» ресурсы, такие как количество процессоров, объем памяти, какую ОС развернуть, имя хоста, IP, маршруты и т.д. В базах данных chef, так что мне не нужно постоянно менять свой рецепт; ). Редактирование пакета данных через веб-интерфейс Chef - действительно простая задача ввода данных, которую я могу дать большинству младших операторов. С Vagrantfile, вашим навсегда изменяющим кодом, и, верите вы или нет, - ломается код, что в значительной степени гарантирует, что вы НЕ будете передавать простые изменения персоналу операций, никогда.

Помимо факта, что у ножа еще нет плагина для virtualbox (хотя я предполагаю, что он есть в не слишком отдаленном будущем), уже есть плагины для большинства «корпоративных» продуктов виртуализации, включая vmware, xenserver и почти все основные «облака». провайдер, а также. Это означает, что нож намного превосходит то, что предлагает Vagrant, если / когда вы готовы выйти за пределы виртуальной коробки. На данный момент сообщество Chef, похоже, с радостью позволяет пользователям виртуальных ящиков хромать вместе с Vagrant, не интегрируя виртуальные apis для плагина ножа. Существует плагин «нож-бродяга», который позволяет использовать пакеты данных для передачи аргументов. Но это все еще требует бродячего программного обеспечения, и это - монолитный Vagrantfile, чтобы функционировать.

Итак, я пойду на конечности и скажу, что Вагрант определенно НЕ «лучше», чем повар с ножом; но необходимо (пока), если вы настаиваете на virtualbox и, возможно, «проще», чем управление шеф-поваром с помощью пакетов данных, при условии, что у вас достаточно простая среда для управления.

0

Vagrant абстрагирует виртуальные машины, что позволяет легко переключать реализации виртуальных машин. Вы можете переключиться с Virtual Box на AWS или Digital Ocean. Это похоже на использование SQL вместо языка запросов к базе данных.

Vagrant позволяет разработчикам быстро настроить свою среду с помощью только одной команды, и она точно такая же, как и у всех остальных. Это важно в крупных компаниях, где разработчики часто приходят и уходят. Это может сократить время на настройку с 3 дней до 1 часа.

+ Что сказал Адам.

(Я до сих пор не нашел использования для шеф-повара или кукольный, хотя ...)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .