我有两个主机,一个Windows和一个Linux,都安装了Vagrant和VMware Workstation,一切都在他们自己的环境中完美运行。但是,当我在Linux中创建来宾VM并在Windows中进行vagrant up
时,Vagrant将删除(!).vagrant
目录中的所有内容并尝试获取基本映像。如果我在Windows中执行vagrant init
和vagrant up
,然后在Linux中执行vagrant up
,则会发生同样的情况。我该如何防止这种情况发生?无论如何使用Vagrant在Windows和Linux之间共享相同的VM?
我正在运行Windows 7,Ubuntu 14.04,Vagrant 1.6.5,VMware Workstation 10.0.3。所有客户机操作系统都会出现此问题。
答案 0 :(得分:1)
.vagrant目录的内容可以是特定于操作系统的,也可以是VMware的内部状态。
我不认为在两台主机之间共享同一个VM实例的方法很简单。 Vagrant方式是provision VM,因此您只共享基本框,然后每个用户/操作系统都会旋转自己的实例。
另一种选择是使用vagrant package
和vagrant box add
来传输已配置的邮箱,但这并不适用于VMware提供商。
另一种方法是使用像AWS或Digital Ocean这样的云提供商,然后将ssh放入框中。或者甚至可以使用vagrant-managed-servers插件。你的问题并没有暗示你使用Vagrant VM的是什么,所以很难说出什么是最好的解决方案。
答案 1 :(得分:0)
以下内容已在带有共享NTFS驱动器的双启动设置中使用VirtualBox Vagrant提供程序与Windows 10和Ubuntu 18.04进行了测试,其中Windows中的D:\
在Linux中可作为/mnt/d/
。
首先(但我没记错,这不是必不可少的),请将Windows和Linux中的VAGRANT_HOME
环境变量设置在同一位置,例如:
D:\.vagrant.d
/mnt/d/.vagrant.d
然后在以下示例中从一个操作系统(从Linux)创建新计算机:
$ cd /mnt/d/vagrant_machines/machine1
$ vagrant init
$ vagrant up
然后在Windows中启动并首先备份D:\vagrant_machines\machine1\.vagrant
,以防万一其内容被意外删除。
然后从VirtualBox注册现有的VM,例如D:\virtualbox_machines\machine1_default_1587262647987_91775\machine1_default_1587262647987_91775.vbox
。
然后运行以下命令:
>vagrant.exe status
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.
The UID used to create the VM was: 1000
Your UID is: 0
并将D:\vagrant_machines\machine1\.vagrant\machines\default\virtualbox\creator_uid
更新为您当前的UID(在此示例中为0
)。
然后启动机器:
>vagrant status
>vagrant up
最后,请注意,您每次切换操作系统都可能需要自动更新creator_uid
。