OSTRZEŻENIE: Poniższe rozwiązanie działa dla Vagrant 1.0.x, ale nie Vagrant 1.1+.
Vagrant używa pliku „.vagrant” w tym samym katalogu co „Vagrantfile” do śledzenia UUID maszyny wirtualnej. Ten plik nie będzie istniał, jeśli nie istnieje maszyna wirtualna. Format pliku to JSON. Wygląda to tak, jeśli istnieje jedna maszyna wirtualna:
{
"active":{
"default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
}
}
default
to nazwa domyślnej maszyny wirtualnej (jeśli nie używasz konfiguracji z wieloma maszynami wirtualnymi).
Jeśli Twoja maszyna wirtualna została w jakiś sposób odłączona, możesz zrobić, aby VBoxManage list vms
wyświetlić listę wszystkich maszyn wirtualnych, o których VirtualBox wie po nazwie i identyfikatorze UUID. Następnie ręcznie utwórz .vagrant
plik w tym samym katalogu co Twój Vagrantfile
i odpowiednio uzupełnij jego zawartość.
Biegnij, vagrant status
aby upewnić się, że Vagrant odebrał właściwe zmiany.
Uwaga: nie jest to oficjalnie obsługiwane przez Vagrant i Vagrant może zmienić format .vagrant
w dowolnym momencie. Ale jest to ważne od wersji Vagrant 0.9.7 i będzie ważne dla Vagrant 1.0.
.vagrant/machines/{name}/{provider}/id
. W rzeczywistości jedyne, co zawiera plik, to identyfikator UUID.W przypadku Vagrant 1.6.3 wykonaj następujące czynności:
1) W katalogu, w którym znajduje się plik Vagrantfile, uruchom polecenie
Będziesz miał coś takiego:
2) Przejdź do następującej ścieżki:
3) Utwórz plik o nazwie id z identyfikatorem maszyny wirtualnej xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
4) Zapisz plik i uruchom włóczęgę
źródło
id
pliku bez znaku nowej linii jestecho -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
Rozwiązanie z wersją wyższą jest takie samo.
Ale najpierw musisz ręcznie uruchomić plik .vbox, aby pojawił się w
VBoxManage list vms
Następnie możesz
.vagrant/machines/default/virtualbox/id
sprawdzić, czy uuid jest właściwy.źródło
id
plik, musisz trzymać go w jednej linii. Z jakiegoś powodu nie lubi znaku nowej linii na końcu (mój edytor tekstu dodaje go domyślnie, więc miałem problemy)..vagrant
plik w formacie 1.0 i automatycznie go zaktualizowałem. Tak szybko, jak to zrobiłem, faktycznie zmienił nazwę starej maszyny wirtualnej na nową nazwę katalogu projektu.Gdyby problem
.vagrant
pojawił się dzisiaj, brakowało mojego folderu i okazało się, że było jeszcze kilka kroków niż zwykłe ustawienie identyfikatora:Ustaw identyfikator:
Znajdź identyfikator i ustaw się
{project-folder}/.vagrant/machines/default/virtualbox/id
.Zauważ, że
default
może to być inne, jeśli ustawisz toVagrantfile
npconfig.vm.define "someothername"
.Zatrzymaj obsługę administracyjną maszyny:
Utwórz plik o nazwie
action_provision
w tym samymid
katalogu, co plik, ustaw jego zawartość na:1.5:{id}
zastępując{id}
identyfikator znaleziony w kroku 1.Skonfiguruj nowy klucz publiczny / prywatny:
Vagrant używa klucza prywatnego przechowywanego w
.vagrant/machines/default/virtualbox/private_key
celu ssh do maszyny. Musisz wygenerować nowy.nazwij to
private_key
.vagrant ssh
następnie skopiujprivate_key.pub
do/home/vagrant/.ssh/authorized_keys
.źródło
Aktualizacja z tym samym problemem dzisiaj w Vagrant 1.7.4:
Na przykład, aby sparować pudełko „vip-quickstart_default_1431365185830_12124” z vagrantem.
źródło
W przypadku konfiguracji z wieloma maszynami wirtualnymi wyglądałoby to tak:
Nazwy maszyn wirtualnych można pobrać z pliku Vagrantfile używanego do tworzenia tych maszyn wirtualnych. Poszukaj tej linii:
W tym przypadku „web” to nazwa maszyny wirtualnej.
źródło
Używam Vagrant 1.8.1 na OSX El Capitan
Moja maszyna wirtualna nie została poprawnie zamknięta po ponownym uruchomieniu komputera, więc kiedy próbowałem
vagrant up
, zawsze tworzyła nową maszynę wirtualną. Żadne rozwiązanie nie zadziałało dla mnie. Ale to, co zadziałało, było odmianą odpowiedzi ingmmurilloWięc zamiast tworzyć
.vagrant/machines/default/virtualbox/id
na podstawie id z uruchomieniaVBoxManage list vms
. Musiałem zaktualizować identyfikator w.vagrant/machines/local/virtual_box/id
Mam jedną wkładkę, która zasadniczo robi to dla mnie:
echo -n `VBoxManage list vms | head -n 1 | awk '{print substr($2, 2, length($2)-2)}'` > .vagrant/machines/local/virtualbox/id
Zakłada się, że pierwsze pudełko jest tym, które muszę zacząć od uruchomienia
VBoxManage list vms
źródło
To jest zmodyfikowane z odpowiedzi @ Petecoop .
Uruchom,
vagrant halt
jeśli jeszcze nie wyłączyłeś skrzynki.Następnie wypisz swoje wirtualne skrzynki:
VBoxManage list vms
Wyświetli listę wszystkich twoich wirtualnych skrzynek. Określić pole, które chcesz przywrócić i chwycić id nawiasach klamrowych:
{}
.Następnie edytuj plik id projektu:
sudo nano .vagrant/machines/default/virtualbox/id
(z katalogu projektu)Zastąp go identyfikatorem skopiowanym z listy VB.
Spróbuj
vagrant reload
.Jeśli to nie zadziała i zawiesi się na autoryzacji SSH (gdzie się potknąłem), skopiuj niezabezpieczony klucz publiczny z włóczęgi git . Zastąp zawartość
/.vagrant/machines/default/virtualbox/private_key
. Kopii zapasowej oryginalnego przedmiotu:cp private_key private_key-bak
.Następnie biegnij
vagrant reload
. Powie, że zidentyfikował niezabezpieczony klucz i utworzy nowy.Wszystko powinno być gotowe.
źródło
W Vagrant 1.9.1:
Miałem maszynę wirtualną w Virtual Box o nazwie `` Ubuntu 16.04.1 '', więc zapakowałem ją jako pudełko włóczęgi z:
odpowiada ...
źródło
Jestem na macos i odkryłem, że usunięcie .locków na pudełkach rozwiązało mój problem.
Z jakiegoś powodu
nie usunąłem tych blokad i po przywróceniu wszystkich moich ustawień w .vagrant / machine / default / virtualbox przy użyciu timemachine, usunięciu blokad, uruchomiła się właściwa maszyna.
Pozostał tylko jeden drobny problem, włączył się do gruba, więc musiałem raz nacisnąć enter, nie wiem, czy to pozostanie, ale wkrótce się dowiem.
Używam Vagrant 1.7.4 i virtualbox 5.0.2
źródło