Il file effettivo .box
viene eliminato dalla Vagrant una volta che il download e l'installazione è completa scatola. Come già detto in altre risposte, mentre il download, il file viene memorizzato .box come:
~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
in cui il nome del file è 'scatola' seguito da un 40 byte hash esadecimale. Un file temporaneo sul mio sistema, ad esempio, è:
~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f
Per quanto posso dire, questo file non viene mai salvato con un *.box
estensione, il che spiega il motivo per cui le ricerche di cui sopra non sono riusciti a individuarlo. Ci sono due modi per recuperare il file di dialogo effettivo:
Scarica il file .box da vagrantcloud.com
- trovare la casella che ti interessa su the atlas.Ad esempio, https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
- Sostituire il nome di dominio con
vagrantcloud.com
. Quindi https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1 diventa https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box.
- Aggiungi
/providers/virtualbox.box
alla fine di tale URL. Così https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1 diventa https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
- Salvare il file .box
- Utilizzare la .box come si desidera, ad esempio, che ospita da soli e indicando
config.vm.box_url
all'URL. O
Prendi il .box direttamente dalla Vagrant
Ciò richiede di modificare il sorgente per evitare che rubino Vagrant di eliminare la casella dopo il download di successo.
- Individuare il file box_add.rb nella directory di installazione di Vagrant. Sul mio sistema si trova a
/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
- Trova la funzione box_add. All'interno della funzione
box_add
, c'è un blocco che legge:
Assicuriamo # Assicurarsi che si elimina il file temporaneo dopo lo aggiungiamo, # a meno che non siamo stati interrotti, nel qual caso si mantengono intorno # così abbiamo può riprendere il download in seguito. ! se @download_interrupted @ logger.debug ("Cancellazione scatola temporanea: # {} box_url") iniziano box_url.delete se box_url salvataggio Errno :: ENOENT # Non è un grosso problema, il file temporaneo non può effettivamente esistere fine fine
- commentare questo blocco fuori.
- Aggiungere un'altra casella utilizzando
vagrant add box <boxname>
.
- Attendere il download. Puoi guardarlo salvare nella directory
~/.vagrant.d/tmp/
come file boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
.
- Rinomina il file in qualcosa di più utile. Ad esempio,
mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box
.
Perché si vuole questo?
Per me, questo è stato utile per recuperare il file .box in modo che possa essere ospitato su un'infrastruttura locale veloce anziché scaricare da HashiCorp's Atlas box catalog o another box provider.
Questo dovrebbe essere parte della funzionalità predefinita di Vagrant in quanto ha un caso d'uso molto definitivo.
fonte
2015-05-14 23:09:50
Penso che mi manchi completamente il tuo punto perché la prima cosa che mi viene in mente è "sudo find/-name lucid32.box". –
esattamente quello che ho fatto, ma mi manca qualcosa in quanto non riesco a trovare 'lucid32.box' usando questo comando esatto ... –
Forse non esiste con quel nome. Ricerche con caratteri jolly come '* .box' forse? (A proposito, l'estensione non sarebbe '.vbox'?) –