Как экспортировать виртуальную машину Vagrant для ее переноса

У меня есть бродячий бокс и работает (настроен с помощью LAMP stack). Мне нужно перенести его на другой компьютер. Как я могу его экспортировать? Я предполагаю, что могу получить файл (или файлы), который можно скопировать на другой компьютер, поэтому я могу запустить некоторую команду для импорта брандмауэра.

Ответ 1

У вас есть два способа сделать это, я назову его грязным и чистым способом:

1. Грязный путь

Создайте окно из текущей виртуальной среды, используя команду vagrant package:

http://docs.vagrantup.com/v2/cli/package.html

Затем скопируйте поле на другой компьютер, добавьте его с помощью vagrant box add и запустите его с помощью vagrant up, как обычно.

Имейте в виду, что файлы в вашем рабочем каталоге (один с Vagrantfile) совместно используются при загрузке виртуальной машины, поэтому вам нужно также скопировать его на другой компьютер.

2. Чистый способ

Теоретически никогда не нужно делать экспорт/импорт с помощью Vagrant. Если у вас есть предусмотрительность, чтобы использовать настройку для настройки виртуальной среды (шеф-повар, марионетка, возможно) и систему управления версиями, например git для вашей рабочей директории, копирование среды было бы в этот момент простым, как работа:

git clone <your_repo>
vagrant up

Ответ 2

Мой жесткий диск на моем Mac делал звуковые сигналы в середине проекта, поэтому я решил установить SSD. Мне нужно было переместить мой проект с одного диска на другой. Несколько вещей, которые следует учитывать:

  • Я vagrant w/virtualbox на Mac
  • Я использую git

Это то, что сработало для меня:

1.) Copy your ~/.vagrant.d directory to your new machine.
2.) Copy your ~/VirtualBox\ VMs directory to your new machine. 
3.) In VirtualBox add the machines one by one using **Machine** >> **Add**
4.) Run `vagrant box list` to see if vagrant acknowledges your machines. 
5.) `git clone my_project`
6.) `vagrant up`

У меня было несколько проблем с дополнениями VB Guest.

enter image description here

Я установил их с помощью этого решения.

Ответ 3

Это на самом деле довольно просто

  1. Установите виртуальную коробку и vagrant на удаленной машине
  2. Заверните свою бродячую машину

    vagrant package --base [machine name as it shows in virtual box] --output/Users/myuser/Documents/Workspace/my.box

  3. скопируйте коробку на свой пульт

  4. Запустите окно на удаленной машине, запустив

    vagrant init [machine name as it shows in virtual box]/Users/myuser/Documents/Workspace/my.box

  5. Беги vagrant up

Ответ 5

Как указано в

Как я могу изменить, где Vagrant ищет свой виртуальный жесткий диск?

состояние виртуальной машины сохраняется в предопределенной папке VirtualBox. Копирование соответствующего компьютера (папки), кроме вашего бродяжного проекта на другой хост, должно сохранить ваше состояние виртуальной машины.

Ответ 6

Ни один из приведенных выше ответов не работал для меня. Я 2 дня отрабатывал способ переноса компьютера Vagrant + VirtualBox с компьютера на другой... Это возможно!

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

Что тебе необходимо сделать:

1- Откройте CMD хост-компьютера вашего компьютера 1 (Командная строка. Откройте его как Администратор с помощью правой кнопки → "Запуск от имени администратора") и перейдите к своим установленным файлам. На мой случай: C: /VVV Вы увидите ваш Vagrantfile и эти папки:

/config/
/database/
/log/
/provision/
/www/
Vagrantfile
...

В папке /www/находится моя папка синхронизации с моими доменами разработки. Возможно, ваша папка синхронизации находится в другом месте, просто убедитесь, что понимаете, что вы делаете. Также /config и /database являются папками синхронизации.

2- выполните эту команду: vagrant package --vagrantfile Vagrantfile

(Эта команда создает пакет вашей виртуальной машины с использованием вашей конфигурации Vagrantfile.)

Вот что вы можете прочитать в документации Vagrant о команде:

Распространенным заблуждением является то, что опция --vagrantfile будет упаковывать Vagrantfile, который используется, когда vagrant init используется с этим блоком. Это не вариант. Вместо этого Vagrantfile загружается и читается как часть процесса загрузки Vagrant, когда используется окно. Для получения дополнительной информации читайте о порядке загрузки Vagrantfile.

https://www.vagrantup.com/docs/cli/package.html

Когда закончите, у вас будет файл package.box.

3- Скопируйте все эти файлы (/config,/database, Vagrantfile, package.box и т.д.) И вставьте их на свой компьютер 2 именно там, где вы хотите установить свою виртуальную машину (на моем случае D: /VVV).

Теперь у вас есть копия всего, что вам нужно на вашем компьютере 2 хоста.

4- запустите: vagrant box add package.box --name VVV

(--name используется для именования вашей виртуальной машины. В моем случае она называется VVV) (Вы можете использовать --force, если у вас уже есть виртуальная машина с этим именем и хотите перезаписать ее. (Используйте осторожно!))

Это распакует вашу новую бродячую виртуальную машину.

5- Когда закончишь, беги: vagrant up

Машина будет установлена, и вы должны увидеть ее в "Диспетчере коробок виртуальных машин Oracle". Если вы не видите виртуальную машину, попробуйте запустить Oracle VM box от имени администратора (щелкните правой кнопкой мыши → Запуск от имени администратора)

Теперь у вас все может быть в порядке, но не забудьте проверить, соответствуют ли ваши хосты ожиданиям:

c:/windows/system32/hosts

6- Может быть, неплохо скопировать файл хоста с компьютера 1 на компьютер 2. Или скопировать нужные строки. В моем случае это те хосты, которые мне нужны:

192.168.50.4 test.dev
192.168.50.4 vvv.dev
...

Где 192.168.50.4 - это IP моей Виртуальной машины, а test.dev и vvv.dev разрабатывают хосты.

Я надеюсь, что это может помочь вам :) Я буду рад, если вы оставите отзыв.

Некоторые особенности моего дела, которые вы можете найти:

Когда я запустил vagrant, была проблема с mysql, она не работала. Мне пришлось запустить на виртуальном сервере (щелкните правой кнопкой мыши на виртуальной машине оракула → Показать консоль): apt-get install mysql-server

После этого я снова побежал vagrant up и все работало, но без данных в базах данных. Поэтому я создал все таблицы mysqldump с компьютера 1 и загрузил их на компьютер 2.

ДРУГИЕ ЗАМЕЧАНИЯ: Моя виртуальная машина не совсем на Компьютере 1 и Компьютере 2. Например, я недавно выполнил внутреннюю настройку для использования NFS (для ускорения синхронизации папок сервера), и мне нужно было снова запустить эту команду на Компьютере 2 хост: vagrant plugin install vagrant-winnfsd

Ответ 7

По состоянию на 2019 год существует подкоманда: vagrant box repackage

vagrant box repackage --help 
Usage: vagrant box repackage <name> <provider> <version>
    -h, --help                       Print this help

Вы можете найти name provider и version, запустив vagrant box list

vagrant box list
macinbox (virtualbox, 10.14.5)

Вывод vagrant box repackage представляет собой файл с именем package.box который в основном представляет собой файл tgz, содержимое которого может быть перечислено ниже:

tar tzf package.box
./metadata.json
./box.ovf
./Vagrantfile
./box-disk001.vmdk