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

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

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

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

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

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

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

бродяга

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

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

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

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

1. Настройка сетей с несколькими VM с легкостью

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Interesting Posts

Как передать данные от 2-го действия до 1-го действия при нажатии? – Андроид

Статические виртуальные элементы C ++?

Что такое идиома C ++, эквивалентная статическому блоку Java?

Расширение существующей функции jQuery

ARC запрещает объекты Objective-C в структурах или объединениях, несмотря на маркировку файла -fno-objc-arc

Почему аккумулятор мертв, несмотря на полный заряд за предыдущий день?

Получение IP-адреса сервера в ASP.NET?

Связывание данных в пользовательских элементах WPF

Как создать и обработать составной первичный ключ в JPA

Максимальное сжатие файлов (для веб-передачи)?

Как избежать исключения StaleElementReferenceException в Selenium?

Как пакеты IP-ответа достигают своего адресата внутри частной локальной сети?

Фильтрация коллекций в C #

Есть ли способ сделать снимок текущего процесса на диске, чтобы восстановить его позже?

Как изменить название Activity на Android?

Давайте будем гением компьютера.