Wohin lädt Vagrant seine .box-Dateien herunter?

267

Was passiert mit der .box-Datei, nachdem der folgende Befehl ausgeführt wurde?

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

Ich kann lucid32.boxdie Datei nach Abschluss des Downloads nicht im Dateisystem finden .

Calvin Cheng
quelle
Ich glaube, ich vermisse deinen Standpunkt völlig, weil das erste, was mir in den Sinn kommt, ist sudo find / -name lucid32.box.
irrational John
genau das, was ich getan habe, aber ich muss etwas vermissen, da ich lucid32.boxmit genau diesem Befehl nicht finden konnte ...
Calvin Cheng
3
Vielleicht existiert es mit diesem Namen nicht. Platzhaltersuchen wie *.boxvielleicht? (Übrigens, wäre die Erweiterung nicht .vbox?)
irrational John
Ja, du hast recht. Die Suche sollte nach *.vboxund sein not *.box. Geheimnis gelüftet. :-) Möchten Sie eine Antwort eingeben, damit ich sie akzeptieren kann? Danke!
Calvin Cheng
1
@CalvinCheng: Ich denke, Sie irren sich darüber, dass es sich nur um ein .vbox-Image in einem Teerarchiv handelt. Es ist zwar ein Teerarchiv, enthält jedoch Dateien wie box-disk1.vmdk, box.ovf und Vagrantfile. Ich weiß nicht genau, wie diese zum Erstellen der von VirtualBox verwendeten Dateien verwendet werden, aber wenn Sie die .vbox-Datei von VB öffnen, sehen Sie, dass es sich nur um XML handelt. Ich gehe davon aus, dass Vagrant seine Dateien (auch eine Binär- und XML-Datei sowie Vagrantfile) in die von VirtualBox verwendeten XML- und Binärdateien umwandelt. Wenn Sie die Binärdateien jedoch öffnen, werden Sie feststellen, dass sie unterschiedlich sind. Es handelt sich also nicht nur um das Entpacken und Umbenennen.
Bilderstürmer

Antworten:

396

Wie in den Dokumenten erwähnt , werden Boxen gespeichert unter:

  • Mac OS X und Linux: ~/.vagrant.d/boxes
  • Windows: C:/Users/USERNAME/.vagrant.d/boxes
Manojlds
quelle
1
Ah. Danke für die Klarstellung. Ich muss blind sein, um diese Erklärung in den Dokumenten verpasst zu haben.
Calvin Cheng
1
@manojlds: siehe meinen Kommentar zur Frage bezüglich der .vbox-Datei. Es ist nicht die VM für sich, es ist nur eine XML-Datei.
Bilderstürmer
gleicher Ort unter Windows?
Arruda
34
Sie können auch die Umgebung var var VAGRANT_HOME verwenden, um den Speicherort von .vagrant.d anzugeben, wie in VAGRANT_HOME = D: \. Vagrant.d (Ja, dies funktioniert auch unter Windows).
Sven
5
in den C:\Users\{username}\.vagrant.d\boxeson windows fand ich nur die .vmdkdatei nicht die .box!!
Bilal
76

Auf einem Mac / Linux-System befinden sich die erfolgreich heruntergeladenen Boxen unter:

~/.vagrant.d/boxes

und erfolglose Boxen befinden sich unter:

~/.vagrant.d/tmp

Auf Windows-Systemen befindet es sich im Ordner Benutzer:

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

Hoffe das wird helfen. Vielen Dank

Arbab Nazar
quelle
10
Ich bin mir nicht sicher, warum dies abgelehnt wurde. Die Informationen zum Ziel nicht erfolgreicher Downloads waren hilfreich.
Alex Coventry
~/.vagrant.d/boxesspeichert niemals die .box-Datei selbst, nur deren Inhalt. ~/.vagrant/tmpwird verwendet, um die .box während des Herunterladens vorübergehend zu speichern, wird jedoch bei der Installation in Vagrant gelöscht.
Luke Peterson
Die dritte Zeile (für Windows) sollte sein%userprofile%\.vagrant.d\boxes
J. Scott Elblein
Diese Antwort gilt für den Fall, dass Sie sich tatsächlich um Ihren Festplattenspeicher kümmern.
Kiltek
45

Um den Pfad zu ändern, können Sie einen neuen Pfad für eine Umgebungsvariable mit dem Namen VAGRANT_HOME festlegen

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

Das ist vielleicht schön, wenn Sie diese Vagabundbilder auf einer anderen Festplatte haben möchten.

Weitere Informationen finden Sie hier in den Dokumentationen: http://docs.vagrantup.com/v2/other/environmental-variables.html

suther
quelle
20

Die eigentliche .boxDatei wird von Vagrant gelöscht, sobald der Download und die Installation der Box abgeschlossen sind. Wie in anderen Antworten erwähnt, wird die .box-Datei beim Herunterladen wie folgt gespeichert:

~/.vagrant.d/tmp/boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Dabei lautet der Dateiname "box", gefolgt von einem 40-Byte-Hexadezimal-Hash. Eine temporäre Datei auf meinem System lautet beispielsweise:

~/.vagrant.d/tmp/boxc74a85fe4af3197a744851517c6af4d4959db77f

Soweit ich das beurteilen kann, wird diese Datei niemals mit einer *.boxErweiterung gespeichert , was erklärt, warum die obigen Suchanfragen sie nicht gefunden haben. Es gibt zwei Möglichkeiten, die eigentliche Boxdatei abzurufen:

  1. Laden Sie die .box-Datei von vagrantcloud.com herunter

    1. Finden Sie die Box, die Sie interessiert, auf dem Atlas . Zum Beispiel https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1
    2. Ersetzen Sie den Domainnamen durch vagrantcloud.com. Aus https://atlas.hashicorp.com/ubuntu/boxes/trusty64/versions/20150530.0.1 wird also https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box .
    3. Fügen Sie /providers/virtualbox.boxam Ende dieser URL hinzu. Aus https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1 wird also https://vagrantcloud.com/ubuntu/boxes/trusty64/versions/20150530.0.1/providers/virtualbox.box
    4. Speichern Sie die .box-Datei
    5. Verwenden Sie die .box wie gewünscht, hosten Sie sie beispielsweise selbst und zeigen Sie config.vm.box_urlauf die URL. ODER
  2. Holen Sie sich die .box direkt von Vagrant

    Dazu müssen Sie die Ruby-Quelle ändern, um zu verhindern, dass Vagrant die Box nach erfolgreichem Download löscht.

    1. Suchen Sie die Datei box_add.rb in Ihrem Vagrant-Installationsverzeichnis. Auf meinem System befindet es sich bei/Applications/Vagrant/embedded/gems/gems/vagrant-1.5.2/lib/vagrant/action/builtin/box_add.rb
    2. Suchen Sie die Funktion box_add. Innerhalb der box_addFunktion gibt es einen Block, der lautet:

      Stellen Sie sicher, dass wir die temporäre Datei nach dem Hinzufügen löschen, es sei denn, wir wurden unterbrochen. In diesem Fall behalten wir sie bei, damit wir den Download später fortsetzen können. if! @download_interrupted @ logger.debug ("Temporäre Box löschen: # {box_url}") begin box_url.delete if box_url retten Errno :: ENOENT # Keine große Sache, die temporäre Datei ist möglicherweise nicht vorhanden

    3. Kommentieren Sie diesen Block aus.
    4. Fügen Sie mit ein weiteres Feld hinzu vagrant add box <boxname>.
    5. Warten Sie, bis es heruntergeladen ist. Sie können sehen, wie es im ~/.vagrant.d/tmp/Verzeichnis als boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXDatei gespeichert wird.
    6. Benennen Sie die Datei in etwas Nützlicheres um. ZB , mv boxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX trusty64.box.

Warum willst du das?

Für mich war dies nützlich, um die .box-Datei abzurufen, damit sie auf einer lokalen, schnellen Infrastruktur gehostet werden kann, anstatt aus dem Atlas-Box-Katalog von HashiCorp oder einem anderen Box-Anbieter heruntergeladen zu werden .

Dies sollte wirklich Teil der Standard-Vagrant-Funktionalität sein, da es einen sehr definitiven Anwendungsfall gibt.

Luke Peterson
quelle
Ist es möglich, die Unterordner im Box-Ordner zu mögen, zu komprimieren oder zu tarieren, um eine installierbare Box-Datei zu erstellen?
ThorSummoner
@ThorSummoner Ja, aber Sie können Vagrant in diesem Fall auch damit beauftragen, z. B. über den folgenden vagrant packageBefehl: docs.vagrantup.com/v2/cli/package.html .
Luke Peterson
15

@ Luke Peterson: Es gibt einen einfacheren Weg, um eine Box-Datei zu bekommen.

Gehen Sie einfach zu https://atlas.hashicorp.com/boxes/search und suchen Sie nach der Box, die Sie herunterladen möchten. Beachten Sie die URL der Box, z.

https://atlas.hashicorp.com/ubuntu/boxen/vertrauy64/versions/ 20150530.0.1

Dann können Sie diese Box unter folgender URL herunterladen:

https://vagrantcloud.com/ubuntu/boxen/vertrauy64/versions/ 20150530.0.1 /providers/virtualbox.box

Ich habe versucht, alle benötigten Boxen erfolgreich herunterzuladen. Hoffe das hilft.

Hiep Ho
quelle
Das ist ein toller Fund! Danke dir. ;)
Luke Peterson
Der Link ist jetzt unterbrochen - muss ersetzt werden durch: app.vagrantup.com .
RTMY
6

Unter Windows finden Sie den Speicherort hier. Ich habe dafür im Internet keine Dokumentation gefunden, und das war mir nicht sofort klar:

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

Mark Liu
quelle
Funktioniert% userprofile% \. Vagrant.d \ boxen dann? % Benutzerprofil% erweitert auf c: \ Benutzer \ {Benutzername}
TamusJRoyce
2

Zusätzlich zu

Mac:
~/.vagrant.d/

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

Sie müssen die Dateien in VirtualBox / OtherVMprovider löschen, um einen sauberen Start zu erzielen.

Punnerud
quelle
0

Unter Windows 10 mit Vagrant 2.2.2 wird durch Festlegen der Umgebungsvariablen VAGRANT_HOMEsichergestellt, dass Boxen in einen Unterordner des angegebenen Ordners heruntergeladen werden VAGRANT_HOME.

In meinem Fall setze ich VAGRANT_HOMEauf e:\vagrant_home, und die Boxen bekommen gespeichert unter e:\vagrant_home\boxes.

Das funktioniert bei mir.

Dort werden die Kartons aufbewahrt. Die virtuellen Maschinen werden in dem in Virtual Box konfigurierten Ordner erstellt. Um den VirtualBox VM-Speicherordner festzulegen, gehen Sie zu : VirtualBox GUI --> File --> Preferences --> General --> Default Machine Folder.

user577736
quelle