83
votes

I've the problem that my home directory is actually located on a remote server and with ~/.vagrant.d sitting on that server, the performance of vagrant decreases heavily (and file-server backup size increases).

So is there any way to move at least ~/vagrant.d/boxes out of the home directory?

Cheers.

7

7 Answers

120
votes

By default Vagrant uses ~/.vagrant.d. Fortunately, vagrant provides an environment variable called VAGRANT_HOME by which you can set vagrant home.

Just do the following to change the vagrant home (this only works in the current session)

export VAGRANT_HOME=/path/to/vagrant

To make it permanent, add this to your ~/.bash_profile (for login shell).

Update: VAGRANT_HOME has been added to the documentation - Environmental Variables

VAGRANT_HOME can be set to change the directory where Vagrant stores global state. By default, this is set to ~/.vagrant.d. The Vagrant home directory is where things such as boxes are stored, so it can actually become quite large on disk.

16
votes

VAGRANT_HOME does not work well in my Windows 8.1. It worked for me when I changed the file

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

on line 117 to

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

like Steve H said and it works fine.

12
votes

It might be useful to permanently set this on a Windows box by executing

setx VAGRANT_HOME "/d/.vagrant.d/"
5
votes

On Windows change line 17 of environment.rb located at:
vagrant\embedded\gems\gems\vagrant-1.x.x.dev\lib\vagrant\environment.rb

2
votes

an other place (the root place where it read ENV variables) is in shared_helpers.rb, line 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

Anyway, I think the best way is to use the environment variable VAGRANT_HOME, in case of vagrant version upgrade.

You can use this function like:

disk_path = self.user_data_path().to_s
1
votes

For Windows users, set the environment variable VAGRANT_HOME to the new location. You might need to restart your PC for it to take effect.

-1
votes

Set of VAGRANT_DOTFILE_PATH environmental variable helped me on Windows machine. VAGRANT_HOME didn't work out.