Вопрос Почему я должен использовать Vagrant вместо VirtualBox?


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

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

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

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

Итак, да, какие преимущества специально предлагает Vagrant над VirtualBox самостоятельно?


211
2018-04-17 14:39


происхождения


Два года я использую Vagrant каждый день для развития - это здорово! Моя команда использует его, и это решает наши проблемы с средой разработки. - John Hunt
Если у вас никогда не было проблем с настройкой серверов PXE, наизусть знать VBoxManage, знаете, как настроить nfs менее чем за минуту и ​​т. д., а также напрямую управлять цепочками построения. Значение растет с каждой частью загадки, которую вы не видите. Широко распространенное использование происходит не от марионеточной интеграции, а потому, что люди могут заразиться изображениями, зараженными безопасностью, прямо в Интернете. независимо от того, что они говорят вам. - Florian Heigl
Я также обнаружил, что бродяга гораздо полезнее в команде с несколькими разработчиками, тогда как раньше это был только я. Я наложил бродягу на свою команду и обнаружил, что именно здесь приходит стоимость. - John Hunt
Через 3,5 года, и теперь я использую докер каждый день для развития. Это хорошо, но другой зверь бродяжничает ... В зависимости от ваших требований я считаю, что бродяга по-прежнему является лучшей платформой для развития команд - с ней работать гораздо проще. - John Hunt
4 года спустя, и я обнаружил, что докер ужасен. Да здравствует бродяга. - John Hunt


ответы:


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

бродяга

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

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

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

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

1. Настройка сетей Multi-VM с легкостью

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

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

2. Контроль источника

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

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

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

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


145
2018-04-27 05:41



Тем не менее, я не понимаю, почему я должен использовать бродягу в среде разработки! Потому что это дорого (если вы хотите использовать VMWare!) Мы можем подготовить виртуальную машину, например, базовые поля, которые используются vagrant, а затем клонировать VMware для настройки другой виртуальной машины. Прежде всего, мы можем контролировать все настройки виртуальной машины на vmrunкоманда, предлагаемая VMware, даже изменение IP-адреса или запуск скрипта внутри гостевой машины! - Oğuz Çelikdemir
@ OğuzÇelikdemir Это справедливо. Vagrant просто упрощает интерфейс VMWare в отношении создания новой машины. За кулисами он использует vmrun контролировать его. Я всегда использовал VirtualBox и, таким образом, не имел опыта работы с брандмауэром VMWare. - Adam Lukens
@AdamLukens, Спасибо за подробные комментарии. То, что вы упомянули, звучит интересно .. но мне интересно, знаете ли вы о VboxManage команда? virtualbox.org/manual/ch08.html  Почти все, что вы упомянули, можно создать как скрипт, передав конкретный параметр ip / vboxmanage controlvm или аналогичную команду в сценарии оболочки, а затем контроль версий, который .. Так как vagrant улучшать virtualbox? - alpha_989
@ alpha_989 Я согласен. Кажется, нет единственного смысла в использовании Vagrant. Просто для удобства. - Niklas Rosencrantz


Помимо превосходного ответа Адама, Бродяга связывает все вместе. Хотя шеф-повар и кукольный (и скрипты соля и оболочки и любой другой прокси-сервер, который вы хотите использовать), являются отдельными вещами, Бродяга связывает все это и делает работу с vagrant up,

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

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

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

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

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


25
2018-01-09 17:56



Но мне намного проще и быстрее отправить разработчику предварительный образ виртуальной машины, чем для них, чтобы установить бродягу, узнать, как его использовать, и справиться с любой из множества проблем, которые возникают, особенно при поддержке окна. Я просто НЕ ДОПУСКАЮ. Кажется, это не что иное, как фаны. - hopeseekr
В настоящее время установка Vagrant невероятно проста. Любому, кто не может установить его, не может быть доверено писать код. Наличие Vagrantfile в исходном коде, который проверяет разработчик, на самом деле намного проще, чем отправка виртуальной машины. Vagrantfile определяет настройку, включая URL-адрес, с которого загружается базовая виртуальная машина (которая затем настраивается). Если изначально вам не нужно вносить изменения в конфигурацию, тогда вы все настроены. Но поскольку вы работаете над своим проектом, вам, скорее всего, придется вносить изменения. Сделайте это в своем Vagrantfile. - iconoclast
Поскольку вы сохраняете Vagrantfile с кодом, все разработчики, присоединяющиеся к проекту, автоматически получат изменения, внесенные вами в вашу виртуальную машину, поскольку вы делаете их в Vagrantfile. Настройка вашего Vagrantfile не должна быть сложной задачей. Вы можете использовать подготовку оболочки, если найдете шеф-повара и кукольника чрезмерными (что они часто бывают). Если вы можете ввести команды оболочки в виртуальной машине, то это крошечное препятствие для настройки команд подготовки оболочки в Vagrantfile. Это потребует небольшого начального усилия и сэкономит вам много головных болей в долгосрочной перспективе. - iconoclast
@hopeseekr Я тоже думал об этом. Я продолжал читать, пытаясь понять эту выгоду. Кажется, я наконец понял. Я читал книгу о сети Python. Тестирование - это сложная установка, имитирующая машины, которые вы можете использовать для изучения. Вы можете создать виртуальную машину с Linux, сделать это вручную, и я один человек, так что все в порядке. Я установил Vagrant в Windows и ввел три команды Vagrant, чтобы вызвать его образ для использования в VirtualBox. Что делать, если у меня было 50 ПК? долгое время для создания снимков. Что делать, если есть изменения? 50 обновлений? Для меня я сразу начал работать, не настраивая все. - johnny
и когда вам нужно что-то изменить на всех 50 компьютерах? - iconoclast


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

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

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

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


8
2018-03-21 14:13





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

  1. Vagrant помогает с максимально возможной близостью платформы разработки и производства. В идеальном мире вы обеспечили бы производственную среду ИСПОЛЬЗОВАННЫМИ сценариями, используемыми для обеспечения Vagrant VM, минимизируя неожиданности во время развертывания.

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

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


8
2018-06-20 11:19



Я серьезно копирую vmx и vmdk из Windows в Linux. Возможно, в мире виртуальных бонусов это совсем другое, но я в этом сомневаюсь! Что проще? Копирование файла или использование брандмауэров и множество проблем, которые могут пойти не так? - hopeseekr
Чтобы поставить на него более тонкую точку зрения, Vagrant можно рассматривать как язык виртуального определения, который может описывать характеристики виртуальной машины - независимо от того, размещен ли он в VirtualBox, VMware, Parallels или что-то-о-вас. Посмотрите, как Vagrant не «конкурирует с» VirtualBox, но работает с ним или за его пределами. - MarkHu
Обычно можно использовать Vagrantfile для описания того, как виртуальная машина должна быть настроена для проекта - Vagrantfile будет привязан к исходному контролю (git и т. Д.) С проектом, для совместного использования на GitHub и т. Д. Это намного меньше, чтобы загрузить чем весь VMDK. - Ben XO


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

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

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

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


0
2018-03-29 01:58