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 继续下一步

  • Vagrantfile与用于给定机器的框打包在一起
  • Vagrant主目录中的Vagrant文件(默认为~/.Vagrant.d)。这使您可以为系统指定一些默认值 用户
  • 从项目目录中删除文件。这是您大部分时间都要修改的Vagrant文件
  • 多机器覆盖(如果有)
  • 提供程序特定的重写(如果有)
  • 如果与项目团队成员共享同一个框,则1。也不是一个真正的选择

    一种解决方案是创建这个
    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