WARNUNG: Die folgende Lösung funktioniert für Vagrant 1.0.x, jedoch nicht für Vagrant 1.1+.
Vagrant verwendet die Datei ".vagrant" im selben Verzeichnis wie Ihre "Vagrant-Datei", um die UUID Ihrer VM zu verfolgen. Diese Datei ist nicht vorhanden, wenn keine VM vorhanden ist. Das Format der Datei ist JSON. Es sieht so aus, wenn eine einzelne VM vorhanden ist:
{
"active":{
"default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
}
}
default
ist der Name der virtuellen Standardmaschine (wenn Sie keine Multi-VM-Setups verwenden).
Wenn sich Ihre VM irgendwie getrennt hat, können Sie VBoxManage list vms
jede VM, die VirtualBox kennt, anhand ihres Namens und ihrer UUID auflisten. Erstellen Sie dann manuell eine .vagrant
Datei im selben Verzeichnis wie Ihre Vagrantfile
und füllen Sie den Inhalt ordnungsgemäß aus.
Führen Sie vagrant status
den Vorgang aus, um sicherzustellen, dass Vagrant die richtigen Änderungen vorgenommen hat.
Hinweis: Dies wird von Vagrant nicht offiziell unterstützt und Vagrant kann das Format .vagrant
jederzeit ändern . Dies gilt jedoch ab Vagrant 0.9.7 und gilt für Vagrant 1.0.
.vagrant/machines/{name}/{provider}/id
. Tatsächlich enthält die Datei nur die UUID.Führen Sie für Vagrant 1.6.3 Folgendes aus:
1) Führen Sie den Befehl in dem Verzeichnis aus, in dem sich Ihre Vagrant-Datei befindet
Sie werden so etwas haben:
2) Gehen Sie zum folgenden Pfad:
3) Erstellen Sie eine Datei mit dem Namen id mit der ID Ihrer VM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
4) Speichern Sie die Datei und führen Sie vagrant aus
quelle
id
Datei ohne Zeilenumbruch zu erstellen, istecho -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
Die Lösung mit der oberen Version ist ziemlich gleich.
Aber zuerst müssen Sie die .vbox-Datei von Hand starten, damit sie in angezeigt wird
VBoxManage list vms
Dann können Sie überprüfen
.vagrant/machines/default/virtualbox/id
, ob die UUID die richtige ist.quelle
id
Datei beim Bearbeiten in einer einzigen Zeile halten müssen. Aus irgendeinem Grund mag es keine Zeilenumbrüche am Ende (mein Texteditor fügt sie standardmäßig hinzu, daher hatte ich Probleme)..vagrant
Datei im 1.0-Format erstellt habe, und es wurde automatisch aktualisiert. Sobald ich dies tat, wurde die alte VM in den neuen Projektverzeichnisnamen umbenannt.Hatte das Problem heute,
.vagrant
fehlte mein Ordner und stellte fest, dass es ein paar Schritte mehr gab, als nur die ID festzulegen:Stellen Sie die ID ein:
Finden Sie die ID und setzen Sie ein
{project-folder}/.vagrant/machines/default/virtualbox/id
.Beachten Sie, dass
default
dies anders sein kann, wenn SieVagrantfile
zconfig.vm.define "someothername"
.Stoppen Sie die Bereitstellung des Computers:
Erstellen Sie eine Datei mit
action_provision
demselben Namen wie dieid
Datei und setzen Sie den Inhalt auf:1.5:{id}
Ersetzen{id}
durch die in Schritt 1 gefundene ID.Richten Sie einen neuen öffentlichen / privaten Schlüssel ein:
Vagrant verwendet einen privaten Schlüssel, der in
.vagrant/machines/default/virtualbox/private_key
ssh gespeichert ist, um in die Maschine zu ssh. Sie müssen eine neue generieren.nenne es
private_key
.vagrant ssh
dann kopieren Sie dieprivate_key.pub
in/home/vagrant/.ssh/authorized_keys
.quelle
Update mit dem gleichen Problem heute mit Vagrant 1.7.4:
Zum Beispiel, um die Box 'vip-quickstart_default_1431365185830_12124' mit vagrant zu koppeln.
quelle
Bei Multi-VM-Setups würde dies folgendermaßen aussehen:
Sie können die VM-Namen aus der Vagrant-Datei abrufen, die zum Erstellen dieser VMs verwendet wurde. Suchen Sie nach dieser Zeile:
"web" ist in diesem Fall der Name der VM.
quelle
Ich verwende Vagrant 1.8.1 unter OSX El Capitan
Meine VM wurde beim Neustart meines Computers nicht richtig geschlossen. Wenn ich
vagrant up
es versuchte , wurde immer eine neue VM erstellt. Hier haben keine Lösungen für mich funktioniert. Aber was funktionierte, war eine Variation von Ingmmurillos AntwortAlso anstatt
.vagrant/machines/default/virtualbox/id
basierend auf der ID zu erstellen, wird ausgeführtVBoxManage list vms
. Ich musste die ID aktualisieren.vagrant/machines/local/virtual_box/id
Ich habe einen Einzeiler, der dies im Wesentlichen für mich erledigt:
echo -n `VBoxManage list vms | head -n 1 | awk '{print substr($2, 2, length($2)-2)}'` > .vagrant/machines/local/virtualbox/id
Dies setzt voraus, dass die erste Box die ist, die ich brauche, um mit dem Laufen zu beginnen
VBoxManage list vms
quelle
Dies wird aus der Antwort von @ Petecoop geändert .
Führen
vagrant halt
Sie es aus, wenn Sie die Box noch nicht heruntergefahren haben.Listen Sie dann Ihre Virtualboxen auf:
VBoxManage list vms
Es werden alle Ihre Virtualboxen aufgelistet. Identifizieren Sie das Feld, zu dem Sie zurückkehren möchten, und greifen Sie die ID zwischen die geschweiften Klammern :
{}
.Bearbeiten Sie dann die Projekt-ID-Datei:
sudo nano .vagrant/machines/default/virtualbox/id
(aus dem Projektverzeichnis)Ersetzen Sie es durch die ID, die Sie aus der Liste der VBs kopiert haben.
Versuchen Sie es
vagrant reload
.Wenn das nicht funktioniert und an der SSH-Autorisierung hängen bleibt (wo ich gestolpert bin), kopieren Sie den unsicheren öffentlichen Schlüssel aus dem Vagabund-Git . Ersetzen Sie den Inhalt von
/.vagrant/machines/default/virtualbox/private_key
. Sichern Sie das Original natürlich :cp private_key private_key-bak
.Dann renne
vagrant reload
. Es wird angezeigt, dass der unsichere Schlüssel identifiziert und ein neuer erstellt wurde.Sie sollten fertig sein.
quelle
In Vagrant 1.9.1:
Ich hatte eine VM in Virtual Box mit dem Namen 'Ubuntu 16.04.1', also habe ich sie als Vagrant Box verpackt mit:
antwortet mit ...
quelle
Ich bin auf Macos und habe festgestellt, dass das Entfernen der .locks auf den Boxen mein Problem gelöst hat.
Aus irgendeinem Grund
Diese Sperren wurden nicht entfernt, und nachdem alle meine Einstellungen in .vagrant / machine / default / virtualbox mithilfe der Zeitmaschine wiederhergestellt und die Sperren entfernt wurden, wurde die richtige Maschine gestartet.
Es bleibt nur 1 kleines Problem übrig. Es wurde in grub gebootet, also musste ich einmal die Eingabetaste drücken. Ich weiß nicht, ob dies so bleibt, aber ich werde es früh genug herausfinden.
Ich verwende Vagrant 1.7.4 und Virtualbox 5.0.2
quelle