Dropbox上的Vagrant .vagrant文 件

问题描述 投票:3回答:2

我在两台机器(家庭和办公室)上使用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在办公室和家庭机器之间共享的工作目录。

  1. 我办公室机器上的vagrant up,成功了。
  2. 我关闭办公室机器回家。
  3. 我得到关于vagrant up的消息,说id的值与我创建的时间不一样。 (总共503 vs 501)
  4. 我做rm -rf .vagrant并再次成功地做vagrant up
  5. 当我回到办公室时,同样的问题。
vagrant dropbox vagrantfile
2个回答
2
投票

在原始问题上

我收到关于流浪者的消息,说id值与我创建的时间不一样。 (总共503 vs 501)

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

但我认为另一个问题是,你的每台机器都在创建自己的虚拟机并将其存储在你的/Users/user/Documents/Virtual Machines下,而你却没有共享这些文件。

当您使用VirtualBox创建VM时,vb将分配VM和id - 此id是密钥,将在vagrant和vb之间建立链接。当您创建2个不同的VM时,VM具有不同的Id,并且vagrant无法在2之间切换。

希望到目前为止这是明确的,但如何从那里开始 - 你会有几个选择:

  1. 显然你不太关心VM的内容(正如你做rm -rf所以你每次切换计算机时重新创建VM)所以你可以创建一个.vagrant.home.vagrant.office并切换.vagrant指向相应的文件夹当你改变因此至少您不需要重新创建VM,您只需从相应的计算机启动VM即可。这不是理想的,但会起作用。
  2. 您可以通过设置env变量VAGRANT_CWD来避免从上面的点切换.vagrant目录,这样您就不会将.vagrant目录存储在您的保管箱帐户下,但是您可以使用一个脚本导出该变量并将.vagrant目录分别存储在您的每台机器上(一个未共享的文件夹),因此每台计算机都将创建自己的VM。如果你计划拥有不同的位置,你可以在你的bash配置文件中为每台计算机设置VAGRANT_CWD,但你也可以使用workhere.sh脚本,如果你在两台计算机上都有相同的设置就可以执行export VAGRANT_CWD=/folder...,只需要做source workhere在你做vagrant up之前
  3. 另一个选项(我没有测试)将涉及几个步骤:将从VirtualBox创建的VM导出/导入到一台计算机到另一台计算机。这里的问题是保持Id。我不确定,但是当你导入到另一台计算机时,通常虚拟框应该保留Id。 您可以在/Users/<user>/Library/VirtualBox/VirtualBox.xml下检查文件并查看<MachineRegistry>下的条目,您将获得机器条目的uuid,确保在导出/导入后您的两台计算机之间匹配 对于vagrant,你需要在你的2台计算机/Users/<user>/.vagrant.d/data/machine-index/index之间同步另一个文件,计算机上的可用VM列表。如果在另一台计算机上没有其他VM,则可以同步,但最好只复制要同步的VM的必要条目。

完成此操作并同步.vagrant文件夹后,您应该可以从一台计算机或另一台计算机上使用vagrant up

同样,我没有测试所有步骤,但我认为这会起作用。

几点说明:

  • 只有当2台计算机具有相同的设置(相同的操作系统(如果不是版本至少相同的系列),文件夹结构,因为某些文件涉及完整路径,相同的虚拟盒版本......)
  • 流浪盒应该在2台计算机上同步(但我认为这是因为你可以从相同的Vagrantfile流浪)
  • 如果您在任何计算机上销毁/创建VM,则需要再次同步Id作为虚拟框,每次创建新VM时都会分配新ID

1
投票

Vagrant为这个用例提供了一个环境变量:VAGRANT_DOTFILE_PATH

请参阅此处的文档:

https://www.vagrantup.com/docs/other/environmental-variables.html#vagrant_dotfile_path

VAGRANT_DOTFILE_PATH

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

© www.soinside.com 2019 - 2024. All rights reserved.