vagrant.d fuera de la carpeta de inicio

80

Tengo el problema de que mi directorio personal está ubicado en un servidor remoto y con ~ / .vagrant.d en ese servidor, el rendimiento de vagrant disminuye considerablemente (y el tamaño de la copia de seguridad del servidor de archivos aumenta).

Entonces, ¿hay alguna forma de mover al menos ~ / vagrant.d / boxes fuera del directorio de inicio?

Salud.

pagid
fuente

Respuestas:

117

Por defecto, Vagrant usa ~/.vagrant.d. Afortunadamente, vagrant proporciona una variable de entorno llamada VAGRANT_HOMEpor la cual puede establecer vagrant en casa.

Simplemente haga lo siguiente para cambiar el hogar vagabundo (esto solo funciona en la sesión actual)

export VAGRANT_HOME=/path/to/vagrant

Para hacerlo permanente, agregue esto a su ~/.bash_profile(para el shell de inicio de sesión).

Actualización : VAGRANT_HOMEse ha agregado a la documentación - Variables ambientales

VAGRANT_HOMEse puede configurar para cambiar el directorio donde Vagrant almacena el estado global. De forma predeterminada, está configurado en ~/.vagrant.d. El directorio de inicio de Vagrant es donde se almacenan cosas como cajas, por lo que puede llegar a ser bastante grande en el disco.

Terry Wang
fuente
8
En realidad, encontré que VAGRANT_HOME debe configurarse y que la propiedad "machinefolder" en VirtualBox debe configurarse a través de "VBoxManage setproperty machinefolder <path>" __ Gracias por la sugerencia
pagid
1
Mis hallazgos personales: al hacer que la variable de entorno sea permanente (en ~/.bash_profileo si usa ZSH en ~/.zshrc, etc.), asegúrese de escribir exporttambién. Compruebe si está configurado con enven la línea de comando. Cuando se usa virtualbox como proveedor, también hay una configuración en la GUI para su ruta predeterminada.
Urs
2
Para Windows, use el diálogo de variables de entorno y agregue VAGRANT_HOME con, por ejemplo, el valor d: \ vagrant. Funciona perfectamente bien con la versión 2.2.4 al menos. Recuerde cerrar la consola de PowerShell existente y abrir una nueva para cargar la nueva variable de entorno.
Eivind Gussiås Løkseth
En WSL2: tuve un problema en el que eliminé un cuadro virtual creado por vagrant y, de repente, ya no podía hacer un vagabundo. Logré solucionarlo copiando la carpeta ~ / .vagrant.d en mi unidad de Windows c. / mnt / c / Después pude volver a hacer vagabundo
serup
16

VAGRANT_HOMEno funciona bien en mi Windows 8.1. Funcionó para mí cuando cambié el archivo

D: \ HashiCorp \ Vagrant \ embedded \ gems \ gems \ vagrant-1.5.3 \ lib \ vagrant \ environment.rb

en la línea 117 para

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

como dijo Steve H y funciona bien.

Increíble
fuente
4
Si usa la ruta local de Windows, recuerde escapar de la barra invertida (esto me sorprendió). Es decir, "D: \\ vagrant \\ home"
Guerrilla
2
Funciona bien ahora, al menos con la versión 2.2.4. Agregué VAGRANT_HOME al cuadro de diálogo de variables de entorno y establecí su valor en d: \ vagrant, que funcionó perfectamente bien después de cerrar y abrir una nueva consola PowerShell.
Eivind Gussiås Løkseth
Si, funciona. No es necesario escapar de las barras invertidas. Simplemente VAGRANT_HOME=d:\my\alternative\path. Supongo que no volvió a cargar el entorno (cerrando y reiniciando la consola, por ejemplo) después de crear la variable de entorno.
David Ferenczy Rogožan
Nunca haga exactamente lo que hizo (modificó un archivo que es parte de un software que está utilizando). Debería volver a aplicar su modificación cada vez que reinstale o actualice Vagrant a una versión más nueva.
David Ferenczy Rogožan
12

Puede ser útil configurarlo permanentemente en un equipo de Windows ejecutando

setx VAGRANT_HOME "/d/.vagrant.d/"
ivica
fuente
1
Tienes que ejecutarlo desde la ruta donde se encuentra la aplicación setx. La ruta más común es: C: \ Windows \ System32
versedi
setx se puede ejecutar sin tener que moverse a C:\Windows\System32, como C:\Windows\System32suele ocurrir en el %path%.
lucid_dreamer
5

En Windows, cambie la línea 17 de environment.rb ubicado en:
vagrant \ embedded \ gems \ gems \ vagrant-1.xxdev \ lib \ vagrant \ environment.rb

Storsey
fuente
3
No estoy seguro de por qué fui rechazado. Esto es relevante para la pregunta: no estaba etiquetado como Linux y podría ayudar a alguien como a mí.
Storsey
14
Jugar con los archivos ruby ​​no es un buen consejo y la variable de entorno VAGRANT_HOME también funciona bien en Windows.
pagid
No me di cuenta de que la variable env estaba disponible en Win ... lo solucionó de inmediato, ¡gracias!
Storsey
1
Ésta es una respuesta válida. No todo el mundo quiere (o sabe) reiniciar Windows para que entren en vigor las nuevas variables de entorno. Lo más probable es que si alguien está buscando cambiar los archivos principales, sea temporal o la desesperación lo haya establecido. support.microsoft.com/en-us/kb/821761
TH_
¿Por qué exactamente debería necesitar reiniciar Windows? Definitivamente no es necesario. Acabo de crear una variable de entorno en este momento y está funcionando bien. No reiniciar. Es posible que solo necesite volver a cargar un entorno en una consola o simplemente iniciarlo después de haber creado la variable de entorno. No modifique los archivos que forman parte de algún software o paquete.
David Ferenczy Rogožan
2

otro lugar (el lugar raíz donde lee las variables ENV) está en shared_helpers.rb, línea 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

De todos modos, creo que la mejor manera es usar la variable de entorno VAGRANT_HOME, en caso de actualización de versión vagabunda.

Puede utilizar esta función como:

disk_path = self.user_data_path().to_s
Christophe
fuente
Esta fue mi solución preferida. Funciona dentro de un archivo vagabundo como Vagrant::user_data_path().to_s.
Tomas Creemers
0

Para los usuarios de Windows, establezca la variable de entorno VAGRANT_HOMEen la nueva ubicación. Es posible que deba reiniciar su PC para que surta efecto.

Dalton Tan
fuente
0

El conjunto de VAGRANT_DOTFILE_PATHvariables ambientales me ayudó en la máquina con Windows. VAGRANT_HOMEno funcionó.

Nazar
fuente