Virtual-manager is a Python script which helps you to manage your Vagrant-powered virtual machines. It allows you to automatically assign a name and an host-only IP address to each of your VMs, so as you can easily access them from your other programs.

You can watch the demo video (revision 5 of virtual-manager).

Quick start

hg clone https://bitbucket.org/pelletier/virtual-manager
echo "source ~/path/to/virtual-manager/vm.sh" >> ~/.bash_profile

Source your bash_profile or start a new shell, then :


This will show the list of the commands.

For non-BASH shells

I use a trick which only works on bash to guess the path ofvirtual-manager directory. If you are using another shell (such as ZSH), you have to set the $VM_DIR variable before sourcing the file:

export VM_DIR="/path/to/virtual-manager/"
source "$VM_DIR/vm.sh"


  • A Linux or Unix box.
  • Python 2.6 or 2.7.
  • Vagrant and VirtualBox.


The configuration is stored in ~/.vm.cfg in the INI format (as parsed by ConfigParser). Here is an example configuration file:

vms_path = ~/.vm/
base_ip = 33.33.33.
vagrant_template = ~/virtual-manager/Vagrantfile

ip =

Each created box has its own section, with only this IP inside (for now). The core section describes the behavior of the script. It's structure is very straightforward.


Revision 7 brought the support of provisions. It allows you to automatically provision your VM when you load it. Here is an example shell session to deal with provisioning using virtual-manager:

$ vm
Use one of the following commands:
    * add name base
    * add_provision name type source provisioner
    * bind_provision name vm_name
    * cd name
    * halt name
    * list
    * provisions_list
    * reload name
    * remove name
    * remove_provision name
    * ssh name
    * unbind_provision vm_name
    * up name

$ vm add_provision baseprov link /Users/thomas/code/base-provision puppet
New provision registered.

$ vm provisions_list
Available provisions:
    * baseprov

$ vm add foo lucid32
Password for sudo?
Virtual machine successfully created

$ vm bind_provision baseprov foo
Provision baseprov bound to foo.

$ vm reload foo
[default] Attempting graceful shutdown of linux.

$ vm unbind_provision foo
Provision unbound from foo.

$ vm remove foo
[default] Forcing shutdown of VM...
Virtual machine removed.

$ vm remove_provision baseprov
Provision removed.