Où Vagrant télécharge-t-il ses fichiers .box?

267

Qu'advient-il du fichier .box après l'exécution de la commande suivante?

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

Je ne trouve pas le lucid32.boxfichier sur le système de fichiers une fois le téléchargement terminé.

Calvin Cheng
la source
Je pense que je manque complètement votre point parce que la première chose qui me vient à l'esprit est sudo find / -name lucid32.box.
Irrationnel John
exactement ce que j'ai fait, mais je dois manquer quelque chose car je n'ai pas pu trouver en lucid32.boxutilisant cette commande exacte ...
Calvin Cheng
3
Peut-être n'existe-t-il pas sous ce nom. Recherches génériques comme *.boxpeut-être? (BTW, l'extension ne serait-elle pas .vbox?)
Irrationnel John
Oui, tu as raison. La recherche doit être pour *.vboxet not *.box. Mystère résolu. :-) Voulez-vous saisir une réponse pour que je puisse l'accepter? THX!
Calvin Cheng
1
@CalvinCheng: Je pense que vous vous trompez car ce n'est qu'une image .vbox dans une archive tar. Il s'agit bien d'une archive tar, mais elle contient des fichiers comme box-disk1.vmdk, box.ovf et Vagrantfile. Je ne sais pas exactement comment ceux-ci sont utilisés pour créer les fichiers que VirtualBox utilise, mais si vous ouvrez le fichier .vbox de VB, vous verrez qu'il ne s'agit que de XML. Je suppose que Vagrant transforme ses fichiers (également un fichier binaire et XML, plus Vagrantfile) en fichiers XML et binaires utilisés par VirtualBox. Si vous ouvrez les fichiers binaires, cependant, vous verrez qu'ils sont différents, donc ce n'est pas une simple question de décompactage et de renommage.
iconoclaste

Réponses:

397

Comme mentionné dans la documentation , les boîtes sont stockées à:

  • Mac OS X et Linux: ~/.vagrant.d/boxes
  • Les fenêtres: C:/Users/USERNAME/.vagrant.d/boxes
manojlds
la source
1
Ah. Merci pour la clarification. Je dois être aveugle d'avoir raté cette explication dans les documents.
Calvin Cheng
1
@manojlds: voir mon commentaire sur la question re: le fichier .vbox. Ce n'est pas la VM en elle-même, c'est juste un fichier XML.
iconoclaste
même endroit sur Windows OS?
Arruda
34
Vous pouvez également utiliser la var env VAGRANT_HOME pour spécifier l'emplacement de .vagrant.d, comme dans VAGRANT_HOME = D: \. Vagrant.d (Oui, cela fonctionne aussi sous Windows).
Sven
5
dans les C:\Users\{username}\.vagrant.d\boxesfenêtres, je n'ai trouvé que le .vmdkfichier pas le .box!!
Bilal
76

Sur le système Mac / Linux, les boîtes téléchargées avec succès sont situées à:

~/.vagrant.d/boxes

et les boîtes infructueuses sont situées à:

~/.vagrant.d/tmp

Sur les systèmes Windows, il se trouve sous le dossier Utilisateurs:

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

J'espère que cela vous aidera. Merci

Arbab Nazar
la source
10
Je ne sais pas pourquoi cela a été rejeté. Les informations sur la destination des téléchargements infructueux étaient utiles.
Alex Coventry
~/.vagrant.d/boxesne stocke jamais le fichier .box lui-même, juste son contenu. ~/.vagrant/tmpest utilisé pour stocker la .box temporairement pendant le téléchargement mais est supprimé lors de l'installation dans Vagrant.
Luke Peterson
La troisième ligne (pour Windows) devrait être%userprofile%\.vagrant.d\boxes
J. Scott Elblein
Cette réponse est pour le cas où vous vous souciez réellement de votre espace disque dur.
kiltek
45

Pour modifier le chemin, vous pouvez définir un nouveau chemin vers une variable d'environnement nommée: VAGRANT_HOME

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

C'est peut-être bien si vous voulez avoir ces images vagabondes sur un autre disque dur.

Plus d'informations ici dans les documentations: http://docs.vagrantup.com/v2/other/environmental-variables.html

suther
la source
20

Le .boxfichier réel est supprimé par Vagrant une fois le téléchargement et l'installation de la boîte terminés. Comme mentionné dans d'autres réponses, lors du téléchargement, le fichier .box est stocké en tant que:

~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

où le nom du fichier est «box» suivi d'un hachage hexadécimal de 40 octets. Un fichier temporaire sur mon système, par exemple, est:

~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f

Pour autant que je sache, ce fichier n'est jamais enregistré avec une *.boxextension, ce qui explique pourquoi les recherches ci-dessus n'ont pas réussi à le localiser. Il existe deux façons de récupérer le fichier de boîte réel:

  1. Téléchargez le fichier .box à partir de vagrantcloud.com

    1. Trouvez la boîte qui vous intéresse sur l'atlas . Par exemple, https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
    2. Remplacez le nom de domaine par vagrantcloud.com. Alors https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1 devient https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box .
    3. Ajoutez /providers/virtualbox.boxà la fin de cette URL. Alors https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1 devient https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
    4. Enregistrez le fichier .box
    5. Utilisez la .box comme vous le souhaitez, par exemple, l'héberger vous-même et pointer config.vm.box_urlvers l'URL. OU
  2. Obtenez la .box directement auprès de Vagrant

    Cela vous oblige à modifier la source ruby ​​pour empêcher Vagrant de supprimer la boîte après un téléchargement réussi.

    1. Recherchez le fichier box_add.rb dans votre répertoire d'installation de Vagrant. Sur mon système, il est situé à/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
    2. Recherchez la fonction box_add. Dans la box_addfonction, il y a un bloc qui lit:

      Assurer # Assurez-vous que nous supprimons le fichier temporaire après l'avoir ajouté, # sauf si nous avons été interrompus, auquel cas nous le conservons # afin que nous puissions reprendre le téléchargement plus tard. if! @download_interrupted @ logger.debug ("Suppression d'une boîte temporaire: # {box_url}") begin box_url.delete si box_url rescue Errno :: ENOENT # Ce n'est pas grave, le fichier temporaire peut ne pas exister réellement end end

    3. Commentez ce bloc.
    4. Ajoutez une autre boîte à l'aide de vagrant add box <boxname>.
    5. Attendez qu'il soit téléchargé. Vous pouvez le regarder enregistrer dans le ~/.vagrant.d/tmp/répertoire sous forme de boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXfichier.
    6. Renommez le fichier en quelque chose de plus utile. Par exemple, mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box.

Pourquoi voudriez-vous cela?

Pour moi, cela a été utile pour récupérer le fichier .box afin qu'il puisse être hébergé sur une infrastructure locale et rapide, par opposition au téléchargement à partir du catalogue de boîtes Atlas de HashiCorp ou d' un autre fournisseur de boîtes .

Cela devrait vraiment faire partie de la fonctionnalité Vagrant par défaut car il a un cas d'utilisation très définitif.

Luke Peterson
la source
est-il possible d'aimer, de compresser ou de tarer les sous-dossiers du dossier boxes pour créer un fichier box installable?
ThorSummoner
@ThorSummoner Oui, mais vous pouvez également laisser Vagrant s'en occuper dans ce cas, par exemple via la vagrant packagecommande: docs.vagrantup.com/v2/cli/package.html .
Luke Peterson
15

@Luke Peterson: Il existe un moyen plus simple d'obtenir un fichier .box.

Accédez simplement à https://atlas.hashicorp.com/boxes/search , recherchez la boîte que vous souhaitez télécharger. Notez l'URL de la boîte, par exemple:

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

Ensuite, vous pouvez télécharger cette boîte en utilisant une URL comme celle-ci:

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

J'ai essayé et téléchargé avec succès toutes les boîtes dont j'ai besoin. J'espère que cette aide.

Hiep Ho
la source
C'est une bonne trouvaille! Je vous remercie. ;)
Luke Peterson
Le lien est maintenant rompu - doit être remplacé par: app.vagrantup.com .
RtmY
6

Sous Windows, l'emplacement peut être trouvé ici. Je n'ai trouvé aucune documentation sur Internet pour cela, et ce n'était pas immédiatement évident pour moi:

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

Mark Liu
la source
Est-ce que% userprofile% \. Vagrant.d \ boxes fonctionne alors? % userprofile% se développe en c: \ users \ {username}
TamusJRoyce
2

En plus de

Mac:
~/.vagrant.d/

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

Vous devez supprimer les fichiers dans VirtualBox / OtherVMprovider pour prendre un nouveau départ.

Punnerud
la source
0

Sur Windows 10 avec Vagrant 2.2.2 , la définition de la variable d'environnement VAGRANT_HOMEgarantit que les boîtes sont téléchargées dans un sous-dossier du dossier spécifié pour VAGRANT_HOME.

Dans mon cas, je me suis mis VAGRANT_HOMEà e:\vagrant_home, et les boîtes sont stockées sous e:\vagrant_home\boxes.

Cela fonctionne pour moi.

C'est là que les boîtes sont stockées. Les machines virtuelles sont en cours de création dans le dossier configuré dans Virtual Box. Pour définir le dossier de stockage VM VirtualBox, allez à: VirtualBox GUI --> File --> Preferences --> General --> Default Machine Folder.

user577736
la source