O .box
arquivo real é excluído pelo Vagrant após a conclusão da instalação do download e da caixa. Conforme mencionado em outras respostas, durante o download, o arquivo .box é armazenado como:
~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
onde o nome do arquivo é 'box' seguido de um hash hexadecimal de 40 bytes. Um arquivo temporário no meu sistema, por exemplo, é:
~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f
Pelo que sei, esse arquivo nunca é salvo com uma *.box
extensão, o que explica por que as pesquisas acima falharam ao localizá-lo. Existem duas maneiras de recuperar o arquivo da caixa real:
Faça o download do arquivo .box no site vagrantcloud.com
- Encontre a caixa de seu interesse no atlas . Por exemplo,
https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
- Substitua o nome do domínio por
vagrantcloud.com
. Portanto, https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
torna-se https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box .
- Adicione
/providers/virtualbox.box
ao final desse URL. Portanto, https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1 torna-se https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
- Salve o arquivo .box
- Use o .box como desejar, por exemplo, hospedando-o você mesmo e apontando
config.vm.box_url
para o URL. OU
Obtenha o .box diretamente do Vagrant
Isso requer que você modifique a fonte ruby para impedir que o Vagrant exclua a caixa após o download bem-sucedido.
- Localize o arquivo box_add.rb no diretório de instalação do Vagrant. No meu sistema, ele está localizado em
/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
- Encontre a função box_add. Dentro da
box_add
função, há um bloco que lê:
garantir # Certifique-se de excluir o arquivo temporário depois de adicioná-lo, # a menos que tenhamos sido interrompidos, caso em que o mantemos por perto # para que possamos retomar o download mais tarde. if! @download_interrupted @ logger.debug ("Excluindo caixa temporária: # {box_url}") começa box_url.delete se box_url rescue Errno :: ENOENT # Não é grande coisa, o arquivo temporário pode não existir realmente end end
- Comente este bloco.
- Adicione outra caixa usando
vagrant add box <boxname>
.
- Aguarde o download. Você pode assistir ao salvamento no
~/.vagrant.d/tmp/
diretório como um boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
arquivo.
- Renomeie o arquivo para algo mais útil. Por exemplo
mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box
,.
Por que você quer isso?
Para mim, isso tem sido útil para recuperar o arquivo .box para que ele possa ser hospedado em uma infraestrutura local rápida, em vez de fazer o download no catálogo de caixas Atlas da HashiCorp ou em outro fornecedor de caixas .
Isso realmente deve fazer parte da funcionalidade padrão do Vagrant, pois possui um caso de uso muito definitivo.
sudo find / -name lucid32.box
.