我正在使用Vagrant和Virtualbox。我正在我的Vagrant文件中配置一个共享文件夹。但是,如果已创建共享文件夹,则在尝试vagrant up
VM时会出错。
config.vm.provider "virtualbox" do |v|
v.customize ["sharedfolder", "add", :id, "--name", "vagrant", "--hostpath", (("//?/" + File.dirname(__FILE__)).gsub("/","\\"))]
v.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant", "1"]
end
config.vm.provision :shell, inline: "mkdir -p /vagrant", run: "always"
config.vm.provision :shell, inline: "mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` vagrant /vagrant", run: "always"
因此,在这个Vagrantfile中,您可以看到我使用Virtualbox的VBoxManage
命令创建共享文件夹。但是如果我创建VM,启动它,然后关闭它,然后再次vagrant up
,然后它再次尝试创建共享文件夹,但它已经存在,因此Vagrant会抛出错误。
是否可以判断共享文件夹是否已存在?或者是否可以在第一次提供期间仅创建共享文件夹?
注意:我这样手动创建共享文件夹的唯一原因(与使用Vagrants共享文件夹命令相反)是因为Vagrant中存在一个错误,Windows主机将共享文件夹中的文件夹路径限制为260长字符。上述手动共享文件夹设置使用UNC路径绕过此问题。
答案 0 :(得分:0)
您可以在添加共享文件夹之前添加以下行。基本上它会杀死共享文件夹并在每次运行VM时再次创建它
v.customize ["sharedfolder", "remove", :id, "--name", "vagrant"]