ВНИМАНИЕ: Решение ниже работает для Vagrant 1.0.x, но не для Vagrant 1.1+.
Vagrant использует файл ".vagrant" в том же каталоге, что и ваш "Vagrantfile", чтобы отслеживать UUID вашей виртуальной машины. Этот файл не будет существовать, если виртуальная машина не существует. Формат файла - JSON. Это выглядит так, если существует одна виртуальная машина:
{
"active":{
"default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
}
}
default
имя виртуальной машины по умолчанию (если вы не используете настройки нескольких виртуальных машин).
Если ваша виртуальная машина каким-то образом стала диссоциированной, то вы можете сделать, VBoxManage list vms
чтобы перечислить каждую виртуальную машину, о которой VirtualBox знает по ее имени и UUID. Затем вручную создайте .vagrant
файл в том же каталоге, что и ваш, Vagrantfile
и заполните его правильно.
Беги, vagrant status
чтобы убедиться, что Вагрант подобрал правильные изменения.
Примечание: это официально не поддерживается Vagrant, и Vagrant может изменить формат .vagrant
в любое время. Но это действительно для Vagrant 0.9.7 и будет действовать для Vagrant 1.0.
.vagrant/machines/{name}/{provider}/id
. Фактически, единственное, что содержится в файле - это UUID.Для Vagrant 1.6.3 сделайте следующее:
1) В каталоге, где находится ваш Vagrantfile, выполните команду
У вас будет что-то вроде этого:
2) Перейти по следующему пути:
3) Создайте файл с именем id с идентификатором вашей виртуальной машины xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
4) Сохраните файл и запустите vagrant up
источник
id
файл без новой строки -echo -n '<your id here>' > id
.for box in test1 test2; do virtualboxid=$(VBoxManage list vms | grep $box | cut -d' ' -f2); echo -n $virtualboxid > .vagrant/machines/$box/virtualbox/id; done
То же самое и с верхней версией.
Но сначала нужно вручную запустить файл .vbox, чтобы он появился в
VBoxManage list vms
Затем вы можете проверить,
.vagrant/machines/default/virtualbox/id
что uuid правильный.источник
id
файл, вы должны сохранить его в одной строке. По какой-то причине ему не нравится новая строка в конце (мой текстовый редактор добавляет ее по умолчанию, поэтому у меня возникли проблемы)..vagrant
файл в формате 1.0, и он обновил его автоматически. Как только я это сделал, он фактически переименовал старую виртуальную машину в новое имя каталога проекта.Возникла проблема сегодня, моя
.vagrant
папка отсутствовала, и было обнаружено, что есть еще несколько шагов, чем просто установка идентификатора:Установите идентификатор:
Найдите идентификатор и установите его
{project-folder}/.vagrant/machines/default/virtualbox/id
.Обратите внимание, что это
default
может быть иначе, если установлено в вашем,Vagrantfile
напримерconfig.vm.define "someothername"
.Остановите машину от подготовки:
Создайте файл с именем
action_provision
в том жеid
каталоге, что и файл, установите его содержимое на:1.5:{id}
заменив{id}
на идентификатор, найденный на шаге 1.Установите новый открытый / закрытый ключ:
Vagrant использует закрытый ключ, хранящийся в
.vagrant/machines/default/virtualbox/private_key
ssh на машине. Вам нужно будет создать новый.назовите это
private_key
.vagrant ssh
затем скопируйтеprivate_key.pub
в/home/vagrant/.ssh/authorized_keys
.источник
Обновление с той же проблемой сегодня с Vagrant 1.7.4:
Например, чтобы связать поле vip-quickstart_default_1431365185830_12124 с vagrant.
источник
Для установок с несколькими виртуальными машинами это будет выглядеть так:
Вы можете получить имена виртуальных машин из Vagrantfile, используемого для создания этих виртуальных машин. Посмотрите на эту строку:
"web" - это имя виртуальной машины в данном случае.
источник
Я использую Vagrant 1.8.1 на OSX El Capitan
Моя виртуальная машина не была правильно закрыта при перезагрузке компьютера, поэтому, когда я пытался,
vagrant up
она всегда создавала новую виртуальную машину. Никакие решения здесь не работали для меня. Но что сработало, так это вариант ответа ИнгммуриллоПоэтому вместо создания
.vagrant/machines/default/virtualbox/id
на основе идентификатора из запущенногоVBoxManage list vms
. Мне пришлось обновить идентификатор в.vagrant/machines/local/virtual_box/id
У меня есть один лайнер, который, по сути, делает это за меня:
echo -n `VBoxManage list vms | head -n 1 | awk '{print substr($2, 2, length($2)-2)}'` > .vagrant/machines/local/virtualbox/id
Предполагается, что первое окно - это то, что мне нужно, чтобы запустить
VBoxManage list vms
источник
Это изменено из ответа @ Petecoop .
Запустите,
vagrant halt
если вы еще не выключили коробку.Затем перечислите свои виртуальные боксы:
VBoxManage list vms
В нем будут перечислены все ваши виртуальные боксы. Найдите ящик , который вы хотите вернуться к и захватить идентификатор между фигурными скобками:
{}
.Затем отредактируйте файл идентификатора проекта:
sudo nano .vagrant/machines/default/virtualbox/id
(из каталога проекта)Замените его идентификатором, который вы скопировали из списка VB.
Попробуй
vagrant reload
.Если это не работает и зависает при авторизации SSH (где я споткнулся), скопируйте незащищенный открытый ключ из бродячего git . Заменить содержимое
/.vagrant/machines/default/virtualbox/private_key
. Резервное копирование оригинала конечно:cp private_key private_key-bak
.Тогда беги
vagrant reload
. Он скажет, что идентифицировал небезопасный ключ, и создаст новый.У вас должно быть все готово.
источник
В Vagrant 1.9.1:
У меня была виртуальная машина в Virtual Box с именем Ubuntu 16.04.1, поэтому я упаковал ее как бродячую коробку с:
отвечает ...
источник
Я использую macos и обнаружил, что удаление .locks на ящиках решило мою проблему.
По какой-то причине
не снимал эти блокировки, и после восстановления всех моих настроек в .vagrant / machine / default / virtualbox с помощью timemachine, сняв блокировки, загрузилась правая машина.
Осталась только одна небольшая проблема. Она загрузилась в grub, поэтому мне пришлось нажать клавишу ввода один раз, не знаю, остается ли это, но я узнаю достаточно скоро.
Я использую vagrant 1.7.4 и virtualbox 5.0.2
источник