2013-02-06 4 views
65

J'ai le problème que mon répertoire de base se trouve réellement sur un serveur distant et avec ~/.vagrant.d siégeant sur ce serveur, la performance de vagabond diminue fortement (et file- la taille de sauvegarde du serveur augmente).vagrant.d en dehors du dossier de base

Est-il possible de déplacer au moins ~/vagrant.d/boxes hors du répertoire personnel?

Vive.

Répondre

96

Par défaut, Vagrant utilise ~/.vagrant.d. Heureusement, vagabond fournit une variable d'environnement appelée par laquelle vous pouvez définir la maison vagabonde.

Il suffit de faire ce qui suit pour changer la maison errante (ce que les travaux de la session en cours)

export VAGRANT_HOME=/path/to/vagrant

Pour le rendre permanent, ajoutez à votre ~/.bash_profile (pour le shell de connexion).

Mise à jour: VAGRANT_HOME a été ajouté à la documentation - Environmental Variables

VAGRANT_HOME peut être réglé pour changer le répertoire dans lequel l'état global des magasins Vagrant. Par défaut, il est défini sur ~/.vagrant.d. Le répertoire de base Vagrant est l'endroit où les choses telles que les boîtes sont stockées, de sorte qu'il peut réellement devenir assez grand sur le disque.

+6

En fait, je trouve que VAGRANT_HOME doit être réglé et que la propriété "machinefolder" dans VirtualBox doit être définie par "VBoxManage setproperty machinefolder " __ Merci pour l'indice – pagid

+0

merci pour ce poste !!! – Robert

+0

Mes constatations personnelles: Lorsque vous définissez la variable d'environnement permanente (dans '~/.bash_profile' ou si vous utilisez ZSH dans' ~/.zshrc', etc.), assurez-vous d'écrire également 'export'. Vérifiez si elle est définie avec 'env' sur la ligne de commande. Lors de l'utilisation de virtualbox en tant que fournisseur, il existe également un paramètre dans l'interface graphique pour son chemin par défaut. – Urs

7

sur la ligne de changement de Windows 17 environment.rb situé à:
errante \ noyé \ gemmes \ gemmes \ errante-1.xxdev \ lib \ errante \ environment.rb

+3

Je ne sais pas pourquoi j'ai été rejeté. Ceci est pertinent à la question - il n'était pas étiqueté linux et pourrait aider quelqu'un comme moi. – Storsey

+12

Le fait de déranger dans les fichiers ruby ​​n'est pas du tout un bon conseil et la variable d'environnement VAGRANT_HOME fonctionne également très bien sous Windows. – pagid

+0

Je ne savais pas que la variable d'environnement était disponible sur Win .. trié ce droit, merci! – Storsey

13

VAGRANT_HOME ne fonctionne pas bien dans mon Windows 8.1. Il a travaillé pour moi quand je l'ai changé le fichier

D: \ HashiCorp \ Vagrant \ intégré \ gemmes \ gemmes \ errante-1.5.3 \ lib \ errante \ environment.rb

en ligne 117 à

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

comme Steve H a dit et cela fonctionne bien.

+2

Si vous utilisez le chemin d'accès local de Windows, n'oubliez pas d'échapper la barre oblique inverse (cela m'a pris). C'est à dire. "D: \\ vagabond \\ home" – Guerrilla

2

un autre endroit (le lieu racine où il lu les variables ENV) est shared_helpers.rb, ligne 71 (v 1.6.5 errante):

# 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 

Quoi qu'il en soit, je pense que la meilleure façon est d'utiliser la variable d'environnement VAGRANT_HOME, dans le cas d'une mise à niveau de version errante.

Vous pouvez utiliser cette fonction comme:

disk_path = self.user_data_path().to_s 
+0

C'était ma solution préférée. Cela fonctionne dans un fichier vagabond comme 'Vagrant :: user_data_path(). To_s'. –

9

Il pourrait être utile de régler durablement cela sur une boîte de Windows en exécutant

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

Vous devez l'exécuter depuis le chemin où se trouve l'application setx. Le chemin le plus courant est: C: \ Windows \ System32 – versedi

Questions connexes