Vagrant box маппинг на существующую виртуальную машину VirtualBox

Иногда есть необходимость указать Vagrant’у, чтобы он запускался на существующей виртуальной машине VirtualBox’a. Стандартный кейс, когда Vagrant при старте создал новую виртуальную машину, а вам нужна старая, к примеру из-за того, что вы увеличили \ уменьшили количество оперативной памяти для VM. Поскольку сам столкнулся с этим в очередной раз, решил написать заметку.

И так, чтобы это сделать необходимо Vagrant’у указать, какую VM использовать. У каждой VM есть свой уникальный ID, который Vagrant хранит у себя в конфигурационных файлах. В каждом каталоге где вы инициализируете Vagrant, он создает свой служебный каталог .vagrant, там он сохраняет всю свою информацию. Чтобы посмотреть какая виртуальная машина используется, достаточно выполнить команду:

cat ./.vagrant/machines/default/virtualbox/id

default — в данном случае имя машины, оно может быть и другим. Так же в этом каталоге лежат к примеру публичный и приватные ключи с которыми мы идем на VM.

Теперь необходимо узнать ID VM в VirtualBox. Данная информация лежит у вас в домашнем каталоге:

cat ~/VirtualBox\ VMs/ubuntu_default_1427828088943_8705/ubuntu_default_1427828088943_8705.vbox

ubuntu_default_1427828088943_8705 — это каталог с именем, которое VirtualBox сгенирировал для вашей машины, оно у каждого свое. ubuntu_default_1427828088943_8705.vbox — это xml файл который лежит внутри указанного выше каталога.

В самом начале этого файла, есть строка:

<Machine uuid="{d80b3b9e-e859-4653-9d81-10a7d72849ec}" name="ubuntu_default_1427828088943_8705" OSType="Ubuntu_64" snapshotFolder="Snapshots" lastStateChange="2015-10-30T10:42:38Z" aborted="true">

где uuid — это и есть нужный нам ID VM, который надо поместить в ./.vagrant/machines/default/virtualbox/id

echo "d80b3b9e-e859-4653-9d81-10a7d72849ec" > ./.vagrant/machines/default/virtualbox/id 

Остается только поднять машину с помощью vagrant up.

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *