Para onde o Vagrant baixa seus arquivos .box?

267

O que acontece com o arquivo .box após a execução do comando a seguir?

vagrant box add lucid32 http://files.vagrantup.com/lucid32.box

Não consigo encontrar o lucid32.boxarquivo no sistema de arquivos após a conclusão do download.

Calvin Cheng
fonte
Acho que estou perdendo completamente o seu ponto de vista, porque a primeira coisa que me vem à cabeça é sudo find / -name lucid32.box.
irracional John
exatamente o que eu fiz, mas eu deve estar faltando alguma coisa que eu não poderia encontrar lucid32.boxusando este comando exato ...
Calvin Cheng
3
Talvez não exista com esse nome. Pesquisas com caracteres curinga, como *.boxtalvez? (BTW, a extensão não seria .vbox?) #
22412 irracional John
Sim você está certo. A pesquisa deve ser por *.vboxe not *.box. Mistério resolvido. :-) Gostaria de digitar uma resposta para que eu pudesse aceitá-la? THX!
Calvin Cheng
1
@CalvinCheng: Acho que você está enganado por ser apenas uma imagem .vbox em um arquivo tar. Na verdade, é um arquivo tar, mas contém arquivos como box-disk1.vmdk, box.ovf e Vagrantfile. Não sei exatamente como eles são usados ​​para criar os arquivos que o VirtualBox usa, mas se você abrir o arquivo .vbox do VB, verá que é apenas XML. Estou assumindo que o Vagrant transforma seus arquivos (também um arquivo binário e XML, mais o Vagrantfile) nos arquivos XML e binários usados ​​pelo VirtualBox. Se você abrir os arquivos binários, no entanto, verá que eles são diferentes, portanto, não é uma simples questão de desarmar e renomear.
Iconoclast

Respostas:

397

Conforme mencionado nos documentos , as caixas são armazenadas em:

  • Mac OS X e Linux: ~/.vagrant.d/boxes
  • Janelas: C:/Users/USERNAME/.vagrant.d/boxes
manojlds
fonte
1
Ah Obrigado pelo esclarecimento. Devo ser cego para ter perdido essa explicação nos documentos.
Calvin Cheng
1
@manojlds: veja meu comentário sobre a questão referente ao arquivo .vbox. Não é a VM por si só, é apenas um arquivo XML.
Iconoclasta
mesmo lugar no sistema operacional Windows?
Arruda
34
Você também pode usar a var env VAGRANT_HOME para especificar a localização de .vagrant.d, como em VAGRANT_HOME = D: \. Vagrant.d (Sim, isso também funciona no Windows).
Sven
5
no C:\Users\{username}\.vagrant.d\boxeswindows, encontrei apenas o .vmdkarquivo e não o .box!!
Bilal
76

No sistema Mac / Linux, as caixas baixadas com sucesso estão localizadas em:

~/.vagrant.d/boxes

caixas malsucedidas estão localizadas em:

~/.vagrant.d/tmp

Nos sistemas Windows, ele está localizado na pasta Usuários:

C:\Users\%userprofile%\.vagrant.d\boxes

Espero que isso ajude. obrigado

Arbab Nazar
fonte
10
Não sei por que isso foi prejudicado. As informações sobre o destino de downloads sem êxito foram úteis.
Alex Coventry
~/.vagrant.d/boxesnunca armazena o arquivo .box em si, apenas seu conteúdo. ~/.vagrant/tmpé usado para armazenar temporariamente o .box durante o download, mas é excluído na instalação do Vagrant.
Luke Peterson
A terceira linha (para Windows) deve ser%userprofile%\.vagrant.d\boxes
J. Scott Elblein
Esta resposta é para o caso em que você realmente se preocupa com o espaço no disco rígido.
kiltek 25/06/19
45

Para alterar o caminho, você pode definir um novo caminho para uma variável de ambiente denominada: VAGRANT_HOME

export VAGRANT_HOME=my/new/path/goes/here/

Talvez seja bom se você quiser ter essas imagens vagantes em outro disco rígido.

Mais informações aqui nas documentações: http://docs.vagrantup.com/v2/other/environmental-variables.html

suther
fonte
20

O .boxarquivo 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 *.boxextensão, o que explica por que as pesquisas acima falharam ao localizá-lo. Existem duas maneiras de recuperar o arquivo da caixa real:

  1. Faça o download do arquivo .box no site vagrantcloud.com

    1. Encontre a caixa de seu interesse no atlas . Por exemplo, https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
    2. 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 .
    3. Adicione /providers/virtualbox.boxao 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
    4. Salve o arquivo .box
    5. Use o .box como desejar, por exemplo, hospedando-o você mesmo e apontando config.vm.box_urlpara o URL. OU
  2. 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.

    1. 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
    2. Encontre a função box_add. Dentro da box_addfunçã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

    3. Comente este bloco.
    4. Adicione outra caixa usando vagrant add box <boxname>.
    5. Aguarde o download. Você pode assistir ao salvamento no ~/.vagrant.d/tmp/diretório como um boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXarquivo.
    6. 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.

Luke Peterson
fonte
é possível gostar, compactar ou tar as subpastas na pasta boxes para criar um arquivo de caixa instalável?
ThorSummoner
@ThorSummoner Sim, mas você também pode deixar o Vagrant lidar com isso nesse caso, por exemplo, através do vagrant packagecomando: docs.vagrantup.com/v2/cli/package.html .
Luke Peterson
15

@ Luke Peterson: Existe uma maneira mais simples de obter o arquivo .box.

Vá para https://atlas.hashicorp.com/boxes/search , procure a caixa que você deseja fazer o download. Observe o URL da caixa, por exemplo:

https://atlas.hashicorp.com/ ubuntu / boxes / trusty64 / versions / 20150530.0.1

Em seguida, você pode fazer o download dessa caixa usando um URL como este:

https://vagrantcloud.com/ ubuntu / boxes / trusty64 / versions / 20150530.0.1 /providers/virtualbox.box

Eu tentei e baixei com sucesso todas as caixas necessárias. Espero que ajude.

Hiep Ho
fonte
Esta é uma ótima descoberta! Obrigado. ;)
Luke Peterson
O link agora está quebrado - precisa ser substituído por: app.vagrantup.com .
RtmY 31/07/19
6

No Windows, o local pode ser encontrado aqui. Não encontrei nenhuma documentação na internet para isso, e isso não foi imediatamente óbvio para mim:

C:\Users\\{username}\\.vagrant.d\boxes

Mark Liu
fonte
% Userprofile% \. Vagrant.d \ boxes funciona então? % userprofile% se expande para c: \ users \ {nomedeusuário}
TamusJRoyce 23/04
2

Além de

Mac:
~/.vagrant.d/

Windows:
C:\Users\%userprofile%\.vagrant.d\boxes

Você precisa excluir os arquivos no VirtualBox / OtherVMprovider para iniciar de maneira limpa.

Punnerud
fonte
0

No Windows 10 com Vagrant 2.2.2 , a configuração da variável de ambiente VAGRANT_HOMEgarantirá que as caixas sejam baixadas para uma subpasta da pasta especificada VAGRANT_HOME.

No meu caso, defino VAGRANT_HOMEcomo e:\vagrant_homee as caixas são armazenadas em e:\vagrant_home\boxes.

Isso funciona para mim.

É aí que as caixas são armazenadas. As máquinas virtuais estão sendo criadas na pasta configurada no Virtual Box. Para definir a pasta de armazenamento VirtualBox VM, acesse: VirtualBox GUI --> File --> Preferences --> General --> Default Machine Folder.

user577736
fonte