ADVERTENCIA: La siguiente solución funciona para Vagrant 1.0.x pero no para Vagrant 1.1+.
Vagrant usa el archivo ".vagrant" en el mismo directorio que su "Vagrantfile" para rastrear el UUID de su VM. Este archivo no existirá si una VM no existe. El formato del archivo es JSON. Se ve así si existe una única VM:
{
"active":{
"default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
}
}
default
es el nombre de la máquina virtual predeterminada (si no está utilizando configuraciones de máquinas virtuales múltiples).
Si su VM se ha desasociado de alguna manera, lo que puede hacer es hacer VBoxManage list vms
una lista de todas las VM que VirtualBox conoce por su nombre y UUID. Luego, cree manualmente un .vagrant
archivo en el mismo directorio que el suyo Vagrantfile
y complete el contenido correctamente.
Ejecute vagrant status
para asegurarse de que Vagrant recogió los cambios adecuados.
Nota: Esto no es oficialmente compatible con Vagrant y Vagrant puede cambiar el formato .vagrant
en cualquier momento. Pero esto es válido a partir de Vagrant 0.9.7 y será válido para Vagrant 1.0.
.vagrant/machines/{name}/{provider}/id
. De hecho, lo único que contiene ese archivo es el UUID.Para Vagrant 1.6.3 haga lo siguiente:
1) En el directorio donde se encuentra su Vagrantfile, ejecute el comando
Tendrás algo como esto:
2) Ir a la siguiente ruta:
3) Cree un archivo llamado id con la ID de su VM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
4) Guarde el archivo y ejecute vagabundo
fuente
id
archivo sin una nueva línea esecho -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
La solución con la versión superior es la misma.
Pero primero debe iniciar el archivo .vbox a mano para que aparezca en
VBoxManage list vms
Luego puede verificar
.vagrant/machines/default/virtualbox/id
para verificar que el uuid sea el correcto.fuente
id
archivo, debe mantenerlo en una sola línea. Por alguna razón, no le gusta la nueva línea al final (mi editor de texto la agrega por defecto, así que tuve problemas)..vagrant
archivo en el formato 1.0, y lo actualizó automáticamente. Tan pronto como lo hice, en realidad cambió el nombre de la vieja VM al nuevo nombre del directorio del proyecto.Tuve el problema hoy,
.vagrant
faltaba mi carpeta y descubrí que había algunos pasos más que simplemente configurar la identificación:Establecer la id:
Encuentra la identificación y configúrala
{project-folder}/.vagrant/machines/default/virtualbox/id
.Tenga en cuenta que
default
puede ser diferente si se establece en suVagrantfile
egconfig.vm.define "someothername"
.Detenga el aprovisionamiento de la máquina:
Cree un archivo nombrado
action_provision
en el mismo directorio que elid
archivo, establezca su contenido en:1.5:{id}
reemplazando{id}
con la identificación que se encuentra en el paso 1.Configurar una nueva clave pública / privada:
Vagrant utiliza una clave privada almacenada en
.vagrant/machines/default/virtualbox/private_key
ssh en la máquina. Tendrá que generar uno nuevo.nombrarlo
private_key
.vagrant ssh
luego copie elprivate_key.pub
en/home/vagrant/.ssh/authorized_keys
.fuente
Actualice con el mismo problema hoy con Vagrant 1.7.4:
Por ejemplo, para emparejar el cuadro 'vip-quickstart_default_1431365185830_12124' a vagabundo.
fuente
Para configuraciones de máquinas virtuales múltiples, se vería así:
Puede obtener los nombres de VM del Vagrantfile utilizado para crear esas máquinas virtuales. Busque esta línea:
"web" es el nombre de la máquina virtual en este caso.
fuente
Estoy usando Vagrant 1.8.1 en OSX El Capitan
Mi VM no se cerró correctamente cuando se reinició mi computadora, por lo que cuando lo intenté
vagrant up
siempre estaba creando una VM nueva. Ninguna solución aquí funcionó para mí. Pero lo que funcionó fue una variación de la respuesta de ingmmurilloEntonces, en lugar de crear en
.vagrant/machines/default/virtualbox/id
función de la id de la ejecuciónVBoxManage list vms
. Tuve que actualizar la identificación en.vagrant/machines/local/virtual_box/id
Tengo un trazador de líneas que esencialmente hace esto por mí:
echo -n `VBoxManage list vms | head -n 1 | awk '{print substr($2, 2, length($2)-2)}'` > .vagrant/machines/local/virtualbox/id
Esto supone que el primer cuadro es el que necesito para comenzar a ejecutar
VBoxManage list vms
fuente
Esto se modifica a partir de la respuesta de @ Petecoop .
Ejecute
vagrant halt
si aún no ha cerrado la caja.Luego, enumere sus cajas virtuales:
VBoxManage list vms
Enumerará todas sus cajas virtuales. Identificar el cuadro desea volver a agarrar y el id entre las llaves:
{}
.Luego edite el archivo de identificación del proyecto:
sudo nano .vagrant/machines/default/virtualbox/id
(desde el directorio del proyecto)Reemplácelo con la identificación que copió de la lista de VB.
Tratar
vagrant reload
.Si eso no funciona y se cuelga de la autorización SSH (donde tropecé), copie la clave pública insegura del git vagabundo . Reemplazar el contenido de
/.vagrant/machines/default/virtualbox/private_key
. Copia de seguridad del original, por supuesto:cp private_key private_key-bak
.Entonces corre
vagrant reload
. Dirá que ha identificado la clave insegura y creará una nueva.Deberías estar listo.
fuente
En Vagrant 1.9.1:
Tenía una VM en Virtual Box llamada 'Ubuntu 16.04.1', así que la empaqué como una caja vagabunda con:
responde con ...
fuente
Estoy en macos y descubrí que eliminar los bloqueos de las cajas resolvió mi problema.
Por alguna razón
no eliminó estos bloqueos, y después de restaurar todas mis configuraciones en .vagrant / machine / default / virtualbox usando timemachine, quitando los bloqueos, la máquina correcta se inició.
Solo queda 1 problema menor. Arrancó en grub, así que tuve que presionar enter una vez, no sé si esto se queda, pero lo descubriré pronto.
Estoy ejecutando vagrant 1.7.4 y virtualbox 5.0.2
fuente