vagrantvagrantfilevagrant-plugin

How to specify a provider during `vagrant up` command?


I have two machines (linux, Mac) and need to use vagrant to manage the vm. VirtualBox is used in the Liux while parallels is used in Mac. so I configured these two providers in the vagrant config file as below:

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

on my mac system, when I run below command but got an error:

$ 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

I have installed the required providers:

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

so why vagrant doesn't pick up the --provider parameter?


Solution

  • This is a current limitation of vagrant

    you cannot back the same machine with both VirtualBox and VMware Fusion. This is a limitation that will be removed in a future version of Vagrant.

    I am not sure if it will get ever solved by vagrant. but so you have created your machine once with virtualbox so now it is expected you work with this VM, not with another machine.

    One way to fix this is to backup the .vagrant folder with the reference of the existing VM like (.vagrant.vbox) and re-run vagrant up --provider parallels to let it create the parallels VM.

    If you want to switch back to the virtualbox VM, you can backup the newly created .vagrant folder and rename the .vagrant.vbox as .vagrant