Vagrant

Vagrant is a Ruby program to automate the installation and setup of virtual machines in VirtualBox (or other providers). It allows to quickly setup an environment for testing purposes or software development. Their documentation contains many more details.

Installation

Note: on our managed Linux workstation Vagrant is already installed.

Preparation

When using VirtualBox you need to re-direct the path where virtual machines are stored outside of your home to the local disk.

VBoxManage setproperty machinefolder /scratch/some_path
VBoxManage list systemproperties | grep 'Default machine folder'

Start by adding an image of a preconfigured virtual machine to your system. You can find our collection of compact Vagrant boxes at https://share.phys.ethz.ch/~isg/vagrant/.

vagrant box add <boxname> <path/to/vm.box>

I.e., if you want to test out Debian Bookworm you would do

vagrant box add bookworm 'https://share.phys.ethz.ch/~isg/vagrant/bookworm64-core.box'

The box will be copied to ~/.vagrant.d/. To get a list of the boxes that you have available use

vagrant box list

You should remove old boxes you no longer need to free disk space

vagrant box remove <boxname>

You can find more boxes on the internet at sites like http://www.vagrantbox.es/.

Creating and Using a Vagrant Box

Next you have to create an initial Vagrantfile — a configuration file — inside some directory

mkdir /path/to/new/project
cd /path/to/new/project
vagrant init <boxname>

You may optionally edit the Vagrantfile to customize it to your needs.

To start the box use

vagrant up

To connect to the box once it is started use

vagrant ssh

You will be logged in without password as the user vagrant. Use sudo to issue commands as root. The directory /vagrant corresponds to the directory where the Vagrantfile is.

To stop the virtual machine use

vagrant halt

To delete the virtual machine use

vagrant destroy

Configuration Management

Vagrant reaches its full power in combination with a configuration management system, like ansible, to automate the installation of packages and deployment of settings in the virtual machine.