I want to use ubuntu/xenial64
box to create two separate VMs for two separate projects. I defined Vagrantfile in two separate project directories and added the line config.vm.box = "ubuntu/xenial64"
to each.
The first box boots successfully. But when I do vagrant up
for second project, I get the error
A VirtualBox machine with the name 'ubuntu-xenial-16.04-cloudimg' already exists.
In Vagrant's documentation it's clearly written that
Boxes are globally stored for the current user. Each project uses a box as an initial image to clone from, and never modifies the actual base image. This means that if you have two projects both using the hashicorp/precise64 box we just added, adding files in one guest machine will have no effect on the other machine.
Why then do I get this error?
I have already checked out other similar questions, but I don't understand their solution of deleting existing VMs that appear to have the same name. According to the Vagrant documentation quote above, that shouldn't be necessary. Am I missing something?
You dont need to delete the other VM and indeed you can certainly have many VMs from the same box.
your error might have to do with the VirtualBox Name of the VM created in VirtualBox, If you have override a property to set this name and its the same name on your 2 projects then there will be a collision, see this answer to see the different ways to define the name of the VM
so either leave vagrant define the name of the VM or make sure you have unique VM name in your different project and it will run just fine
UPDATE I check this particular box and it contains the following Vagrantfile
so make sure in your Vagrantfile to override this property
and change the
vb.name
to be unique for each of your projects.I found that it is simpler to edit the original box's
Vagrantfile
(located~/.vagrant.d/boxes/ubuntu-VAGRANTSLASH-xenial64/<VERSTION>/virtualbox/Vagrantfile
) rather than thinking about unique VM names each time.Working config of Vagrantfile (box!):