How do I associate a Vagrant project directory with an existing VirtualBox VM?

WARNING: The solution below works for Vagrant 1.0.x but not Vagrant 1.1+.

Vagrant uses the ".vagrant" file in the same directory as your "Vagrantfile" to track the UUID of your VM. This file will not exist if a VM does not exist. The format of the file is JSON. It looks like this if a single VM exists:

{
   "active":{
      "default":"02f8b71c-75c6-4f33-a161-0f46a0665ab6"
   }
}

default is the name of the default virtual machine (if you're not using multi-VM setups).

If your VM has somehow become disassociated, what you can do is do VBoxManage list vms which will list every VM that VirtualBox knows about by its name and UUID. Then manually create a .vagrant file in the same directory as your Vagrantfile and fill in the contents properly.

Run vagrant status to ensure that Vagrant picked up the proper changes.

Note: This is not officially supported by Vagrant and Vagrant may change the format of .vagrant at any time. But this is valid as of Vagrant 0.9.7 and will be valid for Vagrant 1.0.


For Vagrant 1.6.3 do the following:

1) In the directory where your Vagrantfile is located, run the command

VBoxManage list vms

You will have something like this:

"virtualMachine" {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

2) Go to the following path:

cd .vagrant/machines/default/virtualbox

3) Create a file called id with the ID of your VM xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

4) Save the file and run vagrant up