Vagrant 链接流浪者文件
我已经有一个项目文件Vagrant 链接流浪者文件,vagrant,vagrantfile,Vagrant,Vagrantfile,我已经有一个项目文件projectpath/Vagrantfile和一个 个人/全局~/.vagrant.d/vagrant文件 我使用全局Vagrantfile设置某些synced_文件夹s以访问VM中的各种点文件。这些绝对是个人配置,不应与团队成员共享的项目文件混合使用 我期待能够添加每个项目配置某些个人。具体来说,我只是为了个人需要添加额外的转发端口,但我不想为我所有的虚拟机都这样做 我希望有一个projectpath/my_vagrantfile.rb或类似的东西放在同一个目录中(并且会
projectpath/Vagrantfile
和一个
个人/全局~/.vagrant.d/vagrant文件
我使用全局Vagrantfile设置某些synced_文件夹
s以访问VM中的各种点文件。这些绝对是个人配置,不应与团队成员共享的项目文件混合使用
我期待能够添加每个项目配置某些个人。具体来说,我只是为了个人需要添加额外的转发端口,但我不想为我所有的虚拟机都这样做
我希望有一个projectpath/my_vagrantfile.rb
或类似的东西放在同一个目录中(并且会放在我的全局git ignore文件中)
我怀疑我可以从全局vagrant文件中执行有条件的加载
,但我想知道是否有一种更干净、更随意的方式根据加载顺序和合并:
需要了解的一个重要概念是Vagrant如何加载Vagrant文件。
Vagrant实际上加载了一系列Vagrant文件,合并了设置
就这样。这允许不同程度的特异性文件
覆盖以前的设置。Vagrant文件按所示顺序加载
在下面请注意,如果在任何步骤中都找不到Vagrant文件,则Vagrant
继续下一步
projectpath/my_vagrantfile.rb
(假设projectpath/是项目的文件夹,其中有vagrantfile和带有VM信息的.vagrant/目录)
然后在全局文件中添加以下内容
if File.file?("#{Dir.pwd}/my_vagrantfile.rb")
eval File.read("#{Dir.pwd}/my_vagrantfile.rb")
end
一个缺点是,只有当您从projectpath
目录运行vagrant
时,它才会工作,因为Dir.pwd
将引用此文件夹。(即。
以字符串形式返回此进程当前工作目录的路径。)
如果运行
vagrant up
指定VM Id或从projectpath的子文件夹调用,它将无法引用自定义my_vagrant file.rb不清楚您建议此代码块应位于何处。理想情况下,它应该在全局vagrant文件中(在您引用的列表中为#2)好的不,我真的想在您的项目目录中创建一个新文件(您称之为projectpath,请注意它可能位于projectpath/.vagrant/中,我猜它是全局文件的一部分),并将其添加到您的项目(本地到projectpath)vagrant文件中,由于您有一个关于自定义Vagrantfile存在的条件,因此它不会对其他团队成员造成任何伤害。请尝试使其更清楚,并使用Dir.pwd
更改\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu,是的,它没有提供更多,但我不认为这是可能的,正如医生提到的,并在回答的第一部分强调是的,文件让我怀疑。。。虽然我使用的是load
而不是eval文件,但仍接受答案。阅读你能解释一下为什么不使用load
?