如何在“vagrant up”命令期间指定提供者?

Zha*_* Yi 4 vagrant vagrantfile vagrant-plugin

我有两台机器(linux,Mac),需要使用vagrant来管理虚拟机。VirtualBox 用于Liux,而parallels 用于Mac。所以我在 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
Run Code Online (Sandbox Code Playgroud)

在我的 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
Run Code Online (Sandbox Code Playgroud)

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

$ vagrant plugin list
docker (0.4.0)
vagrant-parallels (1.7.8)
vagrant-share (1.1.9, system)
vagrant-vbguest (0.15.0)
Run Code Online (Sandbox Code Playgroud)

那么为什么vagrant不获取--provider参数呢?

Fré*_*nri 6

这是vagrant当前的限制

您无法同时使用 VirtualBox 和 VMware Fusion 支持同一台计算机。这是一个限制,将在 Vagrant 的未来版本中删除。

我不确定流浪汉是否能解决这个问题。但是你已经使用 virtualbox 创建了一次机器,所以现在你应该使用这个虚拟机,而不是另一台机器。

解决此问题的一种方法是使用.vagrant现有 VM 的引用(如 ( .vagrant.vbox))备份文件夹,然后重新运行vagrant up --provider parallels以创建并行 VM。

如果你想切换回virtualbox虚拟机,可以备份新创建的.vagrant文件夹并将其重命名.vagrant.vbox.vagrant