2013-02-06 14 views
65

Ich habe das Problem, dass mein Home-Verzeichnis tatsächlich auf einem Remote-Server befindet und mit ~/.vagrant.d sitzt auf diesem Server, die Leistung von Vagrant stark abnimmt (und Datei- Server-Backup-Größe erhöht).vagrant.d außerhalb des Home-Verzeichnisses

Gibt es also eine Möglichkeit, mindestens ~/vagrant.d/Boxen aus dem Home-Verzeichnis zu verschieben?

Prost.

Antwort

96

Standardmäßig verwendet Vagrant ~/.vagrant.d. Glücklicherweise stellt Vagrant eine Umgebungsvariable zur Verfügung, die VAGRANT_HOME genannt wird, durch die Sie Vagranthaus einstellen können.

tun Sie einfach das folgende der Vagabund nach Hause zu ändern (dies funktioniert nur in der aktuellen Sitzung)

export VAGRANT_HOME=/path/to/vagrant

Um es dauerhaft zu machen, fügen Sie diese zu Ihrer ~/.bash_profile (für Login-Shell).

aktualisieren: VAGRANT_HOME wurde in der Dokumentation hinzugefügt - Environmental Variables

VAGRANT_HOME kann so eingestellt werden, um das Verzeichnis, in dem Vagrant speichert globalen Zustand zu ändern. Standardmäßig ist dies auf ~/.vagrant.d festgelegt. Im Vagrant Home-Verzeichnis werden Dinge wie Boxen gespeichert, so dass es auf der Festplatte ziemlich groß werden kann.

+6

Ausführung Eigentlich fand ich, dass VAGRANT_HOME eingestellt werden muss und dass die Eigenschaft "machinefolder" in VirtualBox muss über "VBoxManage setproperty machinefolder " eingestellt werden __ Danke für den Hinweis – pagid

+0

Danke für diesen Beitrag !!! – Robert

+0

Meine persönlichen Ergebnisse: Wenn Sie die Umgebungsvariable permanent machen (in '~/.bash_profile' oder wenn Sie ZSH in' ~/.zshrc' verwenden), sollten Sie auch 'export' schreiben. Überprüfen Sie, ob es in der Befehlszeile mit "env" eingestellt ist. Wenn Sie virtualbox als Provider verwenden, gibt es in der GUI auch eine Einstellung für den Standardpfad. – Urs

7

Auf Windows-Änderungslinie 17 von environment.rb sich unter:
vagrant \ eingebettet \ Edelsteine ​​\ gems Vagabund-1.xxdev \ lib \ vagrant \ environment.rb

+3

Nicht sicher, warum ich abgelehnt wurde. Das ist relevant für die Frage - es wurde nicht als Linux bezeichnet und könnte jemandem helfen, der es getan hat. – Storsey

+12

In den Ruby-Dateien herumzufummeln, ist überhaupt kein guter Rat und die Umgebungsvariable VAGRANT_HOME funktioniert auch unter Windows. – pagid

+0

Habe nicht erkannt, dass die Variable env auf Win verfügbar war. – Storsey

13

VAGRANT_HOME funktioniert \ nicht gut in meinem Windows 8.1. Er arbeitete für mich, wenn ich die Datei geändert

D: \ HashiCorp \ Vagrant \ eingebettet \ Edelsteine ​​\ gems \ Vagabund-1.5.3 \ lib \ vagrant \ environment.rb

on line 117 zu

@home_path = Util::Platform.fs_real_path("D:/vagrant/home/") 

wie Steve H sagte, und es funktioniert gut.

+2

Wenn Sie lokalen Windows-Pfad verwenden, denken Sie daran, Backslash zu entkommen (das hat mich erwischt). I.e. "D: \\ vagrant \\ home" – Guerrilla

2

ein anderer Ort (die Wurzel Ort, an dem es ENV Variablen lesen) ist in shared_helpers.rb, Linie 71 (vagrant v 1.6.5):

# This returns the path to the ~/.vagrant.d folder where Vagrant's 
    # per-user state is stored. 
    # 
    # @return [Pathname] 
    def self.user_data_path 
    # Use user spcified env var if available 
    path = ENV["VAGRANT_HOME"] 

    # On Windows, we default to the USERPROFILE directory if it 
    # is available. This is more compatible with Cygwin and sharing 
    # the home directory across shells. 
    if !path && ENV["USERPROFILE"] 
     path = "#{ENV["USERPROFILE"]}/.vagrant.d" 
    end 

    # Fallback to the default 
    path ||= "~/.vagrant.d" 

    Pathname.new(path).expand_path 
end 

Wie auch immer, ich denke, die beste Art und Weise zu verwenden ist die Umgebungsvariable VAGRANT_HOME, im Falle eines Upgrades der vagabundierenden Version.

Diese Funktion können Sie wie verwenden:

disk_path = self.user_data_path().to_s 
+0

Dies war meine bevorzugte Lösung. Es funktioniert in einer Vagrant-Datei als 'Vagrant :: user_data_path(). To_s'. –

9

Es könnte nützlich sein, um diese dauerhaft festgelegt auf einem Feld von Windows von

setx VAGRANT_HOME "/d/.vagrant.d/" 
+1

Sie müssen es von Pfad ausführen, wo Setx App befindet. Der häufigste Pfad ist: C: \ Windows \ System32 – versedi

Verwandte Themen