如何在`vagrant up`命令中指定提供者?

4

我有两台机器(Linux,Mac),需要使用vagrant来管理虚拟机。在Linux中使用VirtualBox,在Mac中使用Parallels。因此,我在vagrant配置文件中配置了这两个提供程序,如下:

Vagrant.configure('2') do |config|
    config.ssh.forward_agent = true
    config.ssh.password = 'crunch'

    config.vm.box = 'ubuntu/xenial64'

    config.vm.provider 'virtualbox' do |vb|
        vb.gui = true
        vb.memory = '8192'
        vb.name = 'ubuntu'
    end

    config.vm.provider 'parallels' do |vb|
        vb.gui = true
        vb.memory = '8192'
        vb.name = 'ubuntu'
        config.vm.box = 'parallels/ubuntu-14.04'
    end

在我的 Mac 系统上,当我运行以下命令时,出现了错误:
$ vagrant up --provider parallels
An active machine was found with a different provider. Vagrant
currently allows each machine to be brought up with only a single
provider at a time. A future version will remove this limitation.
Until then, please destroy the existing machine to up with a new
provider.

Machine name: default
Active provider: virtualbox
Requested provider: parallels

我已经安装了所需的提供者:

$ vagrant plugin list
docker (0.4.0)
vagrant-parallels (1.7.8)
vagrant-share (1.1.9, system)
vagrant-vbguest (0.15.0)

为什么vagrant无法识别--provider参数?

2个回答

6
这是vagrant的一个当前限制,即不能同时将同一台机器备份到VirtualBox和VMware Fusion中。这个限制将在Vagrant的未来版本中被移除。我不确定它是否会被vagrant解决。但是,如果你已经使用virtualbox创建了你的机器,那么你应该使用这个虚拟机而不是另一个虚拟机。
解决这个问题的方法之一是备份带有现有VM引用的.vagrant文件夹(例如.vagrant.vbox),然后重新运行vagrant up --provider parallels以创建parallels VM。
如果你想切换回virtualbox VM,你可以备份新创建的.vagrant文件夹,并将.vagrant.vbox重命名为.vagrant

0

简短回答

在项目中删除.vagrant文件夹。

rm -r .vagrant

(我留下了这个重复的答案,因为我个人太懒了,没有读之前的答案,错过了解决方案)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接