File yang sebenarnya .box
dihapus oleh Vagrant setelah pengunduhan dan instalasi kotak selesai. Seperti disebutkan dalam jawaban lain, saat mengunduh, file .box disimpan sebagai:
~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
di mana nama file adalah 'kotak' diikuti oleh hash heksadesimal 40 byte. File sementara di sistem saya misalnya, adalah:
~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f
Sejauh yang saya tahu, file ini tidak pernah disimpan dengan *.box
ekstensi, yang menjelaskan mengapa pencarian di atas gagal menemukannya. Ada dua cara untuk mengambil file kotak yang sebenarnya:
Unduh file .box dari vagrantcloud.com
- Temukan kotak yang Anda minati di atlas . Misalnya,
https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
- Ganti nama domain dengan
vagrantcloud.com
. Jadi https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
menjadi https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box .
- Tambahkan
/providers/virtualbox.box
ke akhir URL itu. Jadi https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1 menjadi https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
- Simpan file .box
- Gunakan .box sesuai keinginan, misalnya, hosting sendiri dan tunjuk
config.vm.box_url
ke URL. ATAU
Dapatkan kotak. Langsung dari Vagrant
Ini mengharuskan Anda untuk memodifikasi sumber ruby untuk mencegah Vagrant menghapus kotak setelah unduhan berhasil.
- Temukan file box_add.rb di direktori instalasi Vagrant Anda. Di sistem saya itu terletak di
/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
- Temukan fungsi box_add. Dalam
box_add
fungsi, ada blok yang bertuliskan:
pastikan # Pastikan kami menghapus file sementara setelah kami menambahkannya, # kecuali jika kami terganggu, dalam hal ini kami menyimpannya # agar kami dapat melanjutkan unduhan nanti. jika! @download_interrupted @ logger.debug ("Menghapus kotak sementara: # {box_url}") mulai box_url.delete jika box_url menyelamatkan Errno :: ENOENT # Bukan masalah besar, file temp mungkin tidak benar-benar ada ujung akhirnya
- Komentari blokir ini.
- Tambahkan kotak lain menggunakan
vagrant add box <boxname>
.
- Tunggu sampai selesai mengunduh. Anda dapat melihatnya menyimpan dalam
~/.vagrant.d/tmp/
direktori sebagaiboxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
file.
- Ubah nama file menjadi sesuatu yang lebih berguna. Misalnya
mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box
,.
Mengapa Anda menginginkan ini?
Bagi saya, ini berguna untuk mengambil file .box sehingga dapat di-host di infrastruktur lokal yang cepat daripada men-download dari katalog kotak Atlas HashiCorp atau penyedia kotak lainnya .
Ini benar-benar harus menjadi bagian dari fungsi Vagrant default karena memiliki use case yang sangat definitif.
sudo find / -name lucid32.box
.