Dropbox上的Vagrant.Vagrant文件

Dropbox上的Vagrant.Vagrant文件,vagrant,dropbox,vagrantfile,Vagrant,Dropbox,Vagrantfile,我在两台机器(家庭和办公室)上使用Vagrant,我的工作目录存储在Dropbox中。我经常遇到这样的问题: The VirtualBox VM was created with a user that doesn't match the current user running Vagrant. VirtualBox requires that the same user be used to manage the VM that was created. Please re-run Vagr

我在两台机器(家庭和办公室)上使用Vagrant,我的工作目录存储在Dropbox中。我经常遇到这样的问题:

The VirtualBox VM was created with a user that doesn't match the
current user running Vagrant. VirtualBox requires that the same user
be used to manage the VM that was created. Please re-run Vagrant with
that user. This is not a Vagrant issue.
通过
rm-rf.vagrant
,这是一个很容易解决的问题,蛮力,但我想找到一个更优雅的解决方案——像一种简单的自动化方法,将
.vagrant
文件放在别处

更新

下面是一个场景:办公室和家庭计算机通过Dropbox共享一个工作目录

  • 我成功地在办公机器上漫游
  • 我关掉办公室的机器回家
  • 我在
    vagrant up
    上收到一条消息,说
    id
    值与我创建时的值不同。(一般来说,503对501)
  • 我再次成功地执行了
    rm-rf.vagrant
    vagrant up
  • 当我回到办公室,同样的问题
  • 关于原始问题

    我收到了一条关于on vagrant up的消息,说id值不是 和我创建时一样。(一般来说,503对501)

    您可以通过编辑以下文件
    .vagrant\machines\default\virtualbox\creator\u UID
    中的UID并将501/503更改为0来修复此问题。(0表示您以sudo身份运行)

    但我认为另一个问题是,您的每台计算机都在创建自己的VM,并将其存储在您的
    /Users/user/Documents/Virtual machines
    下,而您没有共享这些文件

    当您使用VirtualBox创建虚拟机时,vb将分配虚拟机和id-此id是关键,并将在vagrant和vb之间建立链接。当您创建两个不同的虚拟机时,虚拟机具有不同的Id,vagrant无法在这两个虚拟机之间切换

    希望到目前为止这是清楚的,但如何从那里开始-您将有两个选择:

  • 显然,您并不太在意虚拟机的内容(正如您所做的那样,
    rm-rf
    ,因此每次切换计算机时都会重新创建虚拟机)因此,您可以创建
    .vagrant.home
    .vagrant.office
    并在更改计算机时切换
    .vagrant
    指向相应的文件夹,这样至少您不需要重新创建虚拟机,只需从相应的计算机启动虚拟机即可。这并不理想,但会奏效

  • 通过设置env variable vagrant_CWD,您可以避免从以上几点切换
    .vagrant
    目录,这样您就不会在dropbox帐户下存储
    .vagrant
    目录,但您可以使用一个脚本导出此变量并在每台机器上分别存储.vagrant目录(一个未共享的文件夹),因此每台计算机将创建自己的VM。 如果您计划使用不同的位置,您可以在bash配置文件中为每台计算机设置
    VAGRANT_CWD
    ,但是您也可以使用
    workhere.sh
    脚本,该脚本将只执行
    导出VAGRANT_CWD=/folder…
    如果您在两台计算机上都有相同的设置,并且只执行
    源代码>在此之前的工作你是流浪者吗

  • 另一个选项(我没有测试)将涉及几个步骤:将从VirtualBox创建的VM导出/导入到一台计算机到另一台计算机。这里的问题是保留Id。我不确定,但通常情况下,当您导入到另一台计算机时,VirtualBox应该保留Id

    • 您可以在
      /Users//Library/VirtualBox/VirtualBox.xml
      下检查文件,并查看
      下的条目,您将获得机器条目的uuid,确保导出/导入后两台计算机之间的uuid匹配
    • 对于vagrant,您需要在两台计算机之间同步另一个文件
      /Users///.vagrant.d/data/machine index/index
      ,该文件列出了计算机上可用的VM。如果一台计算机上有其他VM,而另一台计算机上没有,则可以同步,但最好只复制要同步的VM的必要条目
  • 完成此操作并同步
    .vagrant
    文件夹后,您应该能够从一台或另一台计算机上执行
    vagrant up

    同样,我没有测试所有的步骤,但我认为这是可行的

    几点注意:

    • 仅当两台计算机具有相同的设置(相同的操作系统(如果不是版本,则至少具有相同的系列)、文件夹结构(因为某些文件涉及完整路径)、相同的虚拟盒版本…)时,此功能才起作用
    • vagrant box应该在两台计算机上同步(但我假设是这样的,因为您可以从同一个vagrant文件中漫游)
    • 如果在任何计算机上销毁/创建虚拟机,则需要再次同步该Id,因为每次创建新虚拟机时,virtual box都会分配一个新Id

      • Vagrant为这个用例提供了一个环境变量:
        Vagrant\u DOTFILE\u PATH

        请参阅此处的文档:

        VAGRANT\u DOTFILE\u路径
        VAGRANT\u DOTFILE\u PATH
        可以设置为更改VAGRANT存储VM特定状态的目录,例如VirtualBox VM UUID。默认情况下,这设置为
        .VAGRANT
        。如果您将VAGRANT文件保存在Dropbox文件夹中,以便在台式机和笔记本电脑之间共享该文件夹(例如),Vagrant将使用最近使用的主机上的VM的详细信息覆盖此目录中的文件。为避免此情况,您可以将
        Vagrant\u DOTFILE\u PATH
        设置为
        。Vagrant膝上型电脑
        。Vagrant桌面
        (请记住更新您的
        .gitignore
        !)


        什么时候会发生这种情况?当您运行
        vagrant up
        时?为了弄清楚您的
        。vagrant
        目录在dropbox中,而不是vm?您的vm也在dropbox中吗?virtual box的问题是vm位于一个中央文件夹中(如mac的
        /Users/user/Documents/virtual Machines
        )(例如,vmware将虚拟机存储在
        .vagrant
        目录中,这比在