AVISO: A solução abaixo funciona para o Vagrant 1.0.x, mas não para o Vagrant 1.1 ou posterior.
O Vagrant usa o arquivo ".vagrant" no mesmo diretório que o seu "Vagrantfile" para rastrear o UUID da sua VM. Este arquivo não existirá se uma VM não existir. O formato do arquivo é JSON. Parece que se houver uma única VM:
{
"active":{
"default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
}
}
default
é o nome da máquina virtual padrão (se você não estiver usando configurações de várias VMs).
Se sua VM de alguma forma se desassociar, o que você pode fazer é VBoxManage list vms
listar todas as VMs que o VirtualBox conhece pelo nome e UUID. Em seguida, crie manualmente um .vagrant
arquivo no mesmo diretório que o seu Vagrantfile
e preencha o conteúdo corretamente.
Execute vagrant status
para garantir que o Vagrant receba as alterações adequadas.
Nota: Isso não é oficialmente suportado pelo Vagrant e o Vagrant pode alterar o formato .vagrant
a qualquer momento. Mas isso é válido a partir do Vagrant 0.9.7 e será válido para o Vagrant 1.0.
.vagrant/machines/{name}/{provider}/id
. De fato, a única coisa que esse arquivo contém é o UUID.Para o Vagrant 1.6.3, faça o seguinte:
1) No diretório em que seu Vagrantfile está localizado, execute o comando
Você terá algo parecido com isto:
2) Vá para o seguinte caminho:
3) Crie um arquivo chamado id com o ID da sua VM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
4) Salve o arquivo e execute o vagrant up
fonte
id
arquivo sem uma nova linha é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
A solução com a versão superior é a mesma.
Mas primeiro você precisa iniciar o arquivo .vbox manualmente para que ele apareça em
VBoxManage list vms
Depois, você pode verificar
.vagrant/machines/default/virtualbox/id
se o uuid é o correto.fonte
id
arquivo, mantenha-o em uma única linha. Por alguma razão, ele não gosta de nova linha no final (meu editor de texto a adiciona por padrão, por isso tive problemas)..vagrant
arquivo no formato 1.0, e ele foi atualizado automaticamente. Assim que eu fiz, ele realmente renomeou a VM antiga para o novo nome do diretório do projeto.Teve o problema hoje, minha
.vagrant
pasta estava ausente e constatou que havia mais algumas etapas do que simplesmente definir o ID:Defina o ID:
Encontre o ID e defina
{project-folder}/.vagrant/machines/default/virtualbox/id
.Observe que
default
pode ser diferente se definido no seuVagrantfile
por exemploconfig.vm.define "someothername"
.Pare a máquina de provisionar:
Crie um arquivo nomeado
action_provision
no mesmo diretório que oid
arquivo, defina seu conteúdo para:1.5:{id}
substituindo{id}
pelo ID encontrado na etapa 1.Configure uma nova chave pública / privada:
O Vagrant usa uma chave privada armazenada no
.vagrant/machines/default/virtualbox/private_key
ssh na máquina. Você precisará gerar um novo.nomeie
private_key
.vagrant ssh
depois copie o arquivoprivate_key.pub
para/home/vagrant/.ssh/authorized_keys
.fonte
Atualize com o mesmo problema hoje com o Vagrant 1.7.4:
Por exemplo, para emparelhar a caixa 'vip-quickstart_default_1431365185830_12124' com vagrant.
fonte
Para configurações de várias VMs, seria assim:
Você pode obter os nomes de vm no arquivo Vagrant usado para criar essas VMs. Procure esta linha:
"web" é o nome da VM nesse caso.
fonte
Estou usando o Vagrant 1.8.1 no OSX El Capitan
Meu vm não foi fechado corretamente quando o computador foi reiniciado; portanto, quando tentei,
vagrant up
ele sempre criava um novo vm. Nenhuma solução aqui funcionou para mim. Mas o que funcionou foi uma variação da resposta de ingmmurilloEntão, em vez de criar com
.vagrant/machines/default/virtualbox/id
base no ID em execuçãoVBoxManage list vms
. Eu tive que atualizar o id.vagrant/machines/local/virtual_box/id
Eu tenho um liner que essencialmente faz isso por mim:
echo -n `VBoxManage list vms | head -n 1 | awk '{print substr($2, 2, length($2)-2)}'` > .vagrant/machines/local/virtualbox/id
Isso pressupõe que a primeira caixa seja a que eu preciso começar a executar
VBoxManage list vms
fonte
Isso é modificado a partir da resposta de @ Petecoop .
Execute
vagrant halt
se você ainda não desligou a caixa.Em seguida, liste suas caixas virtuais:
VBoxManage list vms
Ele listará todas as suas caixas virtuais. Identificar a caixa que você deseja reverter para e pegar o id entre as chaves:
{}
.Em seguida, edite o arquivo de identificação do projeto:
sudo nano .vagrant/machines/default/virtualbox/id
(no diretório do projeto)Substitua-o pelo ID que você copiou da lista de VBs.
Tente
vagrant reload
.Se isso não funcionar e ficar pendurado na autorização SSH (onde eu tropecei), copie a chave pública insegura do vagabundo git . Substitua o conteúdo de
/.vagrant/machines/default/virtualbox/private_key
. Backup o original do curso:cp private_key private_key-bak
.Então corra
vagrant reload
. Dirá que identificou a chave insegura e criou uma nova.Você deve estar pronto.
fonte
No Vagrant 1.9.1:
Eu tinha uma VM no Virtual Box chamada 'Ubuntu 16.04.1', então o empacotei como uma caixa vagrant com:
responde com ...
fonte
Estou no macos e descobri que remover os bloqueios nas caixas resolveu meu problema.
Por algum motivo
não removeu esses bloqueios e, após restaurar todas as minhas configurações em .vagrant / machine / default / virtualbox usando o timemachine, removendo os bloqueios, a máquina correta foi inicializada.
Apenas um pequeno problema permanece, ele inicializou no grub, então eu tive que pressionar enter uma vez, não sei se isso está ficando, mas vou descobrir em breve.
Estou executando o vagrant 1.7.4 e o virtualbox 5.0.2
fonte