PERINGATAN: Solusi di bawah ini berfungsi untuk Vagrant 1.0.x tetapi tidak untuk Vagrant 1.1+.
Vagrant menggunakan file ".vagrant" di direktori yang sama dengan "Vagrantfile" Anda untuk melacak UUID VM Anda. File ini tidak akan ada jika VM tidak ada. Format file adalah JSON. Sepertinya ini jika ada satu VM:
{
"active":{
"default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
}
}
default
adalah nama mesin virtual default (jika Anda tidak menggunakan pengaturan multi-VM).
Jika VM Anda entah bagaimana menjadi terpisah, yang dapat Anda lakukan adalah melakukan VBoxManage list vms
yang akan mencantumkan setiap VM yang diketahui oleh VirtualBox dengan namanya dan UUID. Kemudian buat .vagrant
file secara manual di direktori yang sama dengan Anda Vagrantfile
dan isi konten dengan benar.
Jalankan vagrant status
untuk memastikan bahwa Vagrant mengambil perubahan yang tepat.
Catatan: Ini tidak didukung secara resmi oleh Vagrant dan Vagrant dapat mengubah format .vagrant
kapan saja. Tetapi ini berlaku pada Vagrant 0.9.7 dan akan berlaku untuk Vagrant 1.0.
.vagrant/machines/{name}/{provider}/id
. Faktanya, satu-satunya isi file tersebut adalah UUID.Untuk Vagrant 1.6.3 lakukan hal berikut:
1) Di direktori tempat Vagrantfile Anda berada, jalankan perintah
Anda akan memiliki sesuatu seperti ini:
2) Pergi ke jalur berikut:
3) Buat file bernama id dengan ID VM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Anda
4) Simpan file dan jalankan gelran
sumber
id
file tanpa baris baru adalahecho -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
Solusi dengan versi atas cukup sama.
Tetapi pertama-tama Anda harus meluncurkan file .vbox dengan tangan agar muncul
VBoxManage list vms
Kemudian Anda dapat memeriksa
.vagrant/machines/default/virtualbox/id
untuk memeriksa bahwa uuid adalah yang benar.sumber
id
file, Anda harus menyimpannya dalam satu baris. Untuk beberapa alasan itu tidak suka baris baru di akhir (editor teks saya menambahkannya secara default, jadi saya punya masalah)..vagrant
file dalam format 1.0, dan memutakhirkannya secara otomatis. Begitu saya melakukannya, itu benar-benar mengubah nama VM lama ke nama direktori proyek baru.Mengalami masalah hari ini,
.vagrant
folder saya hilang dan menemukan bahwa ada beberapa langkah lebih dari sekadar mengatur id:Tetapkan id:
Temukan id dan atur
{project-folder}/.vagrant/machines/default/virtualbox/id
.Catatan yang
default
mungkin berbeda jika disetelVagrantfile
misalnya Andaconfig.vm.define "someothername"
.Hentikan mesin dari penyediaan:
Buat file bernama
action_provision
dalam dir yang sama denganid
file, atur isinya ke:1.5:{id}
ganti{id}
dengan id yang ditemukan di langkah 1.Menyiapkan kunci publik / pribadi baru:
Vagrant menggunakan kunci pribadi yang disimpan di
.vagrant/machines/default/virtualbox/private_key
untuk ssh ke dalam mesin. Anda harus membuat yang baru.beri nama
private_key
.vagrant ssh
lalu salinprivate_key.pub
ke/home/vagrant/.ssh/authorized_keys
.sumber
Perbarui dengan masalah yang sama hari ini dengan Vagrant 1.7.4:
Misalnya, untuk memasangkan kotak 'vip-quickstart_default_1431365185830_12124' ke gelandangan.
sumber
Untuk pengaturan multi-VM, akan terlihat seperti ini:
Anda bisa mendapatkan nama vm dari Vagrantfile yang digunakan untuk membuat VM tersebut. Cari baris ini:
"web" adalah nama vm dalam hal ini.
sumber
Saya menggunakan Vagrant 1.8.1 di OSX El Capitan
Vm saya tidak ditutup dengan benar ketika komputer saya restart, jadi ketika saya mencobanya
vagrant up
selalu membuat vm baru. Tidak ada solusi di sini yang berfungsi untuk saya. Tapi yang berhasil adalah variasi jawaban ingmmurilloJadi alih-alih membuat
.vagrant/machines/default/virtualbox/id
berdasarkan id dari menjalankanVBoxManage list vms
. Saya harus memperbarui id di.vagrant/machines/local/virtual_box/id
Saya punya satu liner yang pada dasarnya melakukan ini untuk saya:
echo -n `VBoxManage list vms | head -n 1 | awk '{print substr($2, 2, length($2)-2)}'` > .vagrant/machines/local/virtualbox/id
Ini mengasumsikan kotak pertama adalah yang saya harus mulai dari menjalankan
VBoxManage list vms
sumber
Ini dimodifikasi dari jawaban @ Petecoop .
Jalankan
vagrant halt
jika Anda belum mematikan kotak.Kemudian daftarkan virtualbox Anda:
VBoxManage list vms
Ini akan mencantumkan semua kotak virtual Anda. Mengidentifikasi kotak Anda ingin kembali ke dan ambil id antara kurung keriting:
{}
.Kemudian edit file id proyek:
sudo nano .vagrant/machines/default/virtualbox/id
(dari direktori proyek)Ganti dengan id yang Anda salin dari daftar VB.
Coba
vagrant reload
.Jika itu tidak berhasil dan digantung pada otorisasi SSH (tempat saya tersandung), salin kunci publik yang tidak aman dari gelandangan git . Ganti konten
/.vagrant/machines/default/virtualbox/private_key
. Cadangan asli tentu saja:cp private_key private_key-bak
.Kemudian jalankan
vagrant reload
. Itu akan mengatakan itu mengidentifikasi kunci tidak aman dan membuat yang baru.Anda harus siap.
sumber
Dalam Vagrant 1.9.1:
Saya memiliki VM di Virtual Box bernama 'Ubuntu 16.04.1' jadi saya mengemasnya sebagai kotak gelandangan dengan:
merespons dengan ...
sumber
Saya menggunakan Macos dan menemukan bahwa menghapus kunci di kotak memecahkan masalah saya.
Untuk beberapa alasan
tidak menghapus kunci ini, dan setelah mengembalikan semua pengaturan saya di .vagrant / machine / default / virtualbox menggunakan timemachine, menghapus kunci, mesin yang tepat boot.
Hanya 1 masalah kecil yang tersisa, itu boot ke grub jadi saya harus menekan enter sekali, tidak tahu apakah ini tetap, tetapi saya akan segera mengetahuinya.
Saya menjalankan gelandangan 1.7.4 dan virtualbox 5.0.2
sumber