将.vagrant文​​件夹放在一个目录中

时间:2017-04-25 16:00:19

标签: vagrant

Vagrant将在.vagrant所在的同一路径中创建一个名为Vagrantfile的目录,其中存储信息和框状态。

我希望将此目录存储在其他位置,最好的选项是../.vagrant中定义的目录(Vagrantfile)。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用VAGRANT_DOTFILE_PATH environmnent variable

执行此操作
  

VAGRANT_DOTFILE_PATH可以设置为更改Vagrant存储VM特定状态的目录,例如VirtualBox VM UUID。默认情况下,此项设置为.vagrant。如果将Vagrant文​​件保存在Dropbox文件夹中以便共享桌面和笔记本电脑之间的文件夹(例如),Vagrant将使用最近使用的主机上的VM详细信息覆盖此目录中的文件。为避免这种情况,您可以在相应的计算机上将VAGRANT_DOTFILE_PATH设置为.vagrant-laptop.vagrant-desktop。 (请记住更新.gitignore!)

查看https://github.com/mitchellh/vagrant/issues/3705#issuecomment-218569456,您可以从Vagrantfile设置此变量 - 例如

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANT_DOTFILE_PATH = "#{ENV['HOME']}/project/vagrant/.vagrant";    
currpath = ENV['VAGRANT_DOTFILE_PATH'];
if(currpath.nil?)
    currpath = '.vagrant';
end
puts currpath #debugging
if(currpath != VAGRANT_DOTFILE_PATH)
    ENV['VAGRANT_DOTFILE_PATH'] = VAGRANT_DOTFILE_PATH
    ret = system "vagrant",*ARGV
    FileUtils.rm_r(currpath)
    if(ret)
      exit
    else
      abort "Finished"
    end
end

Vagrant.configure(2) do |config|
  ...
end

我相信Windows,HOME变量称为HOMEPATH

答案 1 :(得分:1)

您可以通过为Vagrant设置环境变量来实现此目的,特别是VAGRANT_DOTFILE_PATH

所以在这种情况下:

cd /path/to/Vagrantfile
export VAGRANT_DOTFILE_PATH=../.vagrant
vagrant up