Skip to main content

Use vagrant to bring up a test only single node OpenContrail 1.20 system

OpenContrail contains a quick start guide  with step-by-step instructions to install a single server all in one setup (including Openstack). More often than not, I was in need of a clean OpenContrail node to test a few things against it, only to tear it down again or leave it as a suspended and soon forgotten VM image on the disk. offers a development environment to create and configure lightweight, reproducible, and portable development environments. Starting from the official Ubuntu Server 14.04 LTS cloud image (,  I created a Vagrantfile for a VirtualBox virtual machine with 8 GBytes of RAM and 2 vcpu’s and a private network (in addition to vagrant’s default NAT network) with a fixed IP address of That address can be changed in the Vagrantfile to suit your needs. The provisioning/install of OpenContrail is controlled via the shell script That script follows the quick start guide mentioned earlier by first updating Ubuntu to the latest patch release, then downloading and installing OpenContrail 1.20 and OpenStack Icehouse.

The required Vagrantfile and provisioning script can be downloaded from github at

$ mkdir temp
$ cd temp
$ git clone git://
Cloning into 'opencontrail'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 11 (delta 2), reused 4 (delta 0)
Receiving objects: 100% (11/11), 10.44 KiB | 0 bytes/s, done.
Resolving deltas: 100% (2/2), done.
Checking connectivity... done.

The following files should be present in the automatically created directory ‘opencontrail’:

$ cd opencontrail
$ ls
LICENSE    Vagrantfile

Ubuntu, OpenContrail and Openstack will be downloaded automatically from the Internet when the virtual machine is launched via ‘vagrant up’. The initial installation will typically take about 20 minutes and depends on the Internet access speed and the CPU.

 $ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'ubuntu/trusty64'...
==> default: Matching MAC address for NAT networking...
==> default: Checking if box 'ubuntu/trusty64' is up to date...
==> default: Setting the name of the VM: simple-gateway-vagrant_default_1416160329884_44357
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address:
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => /Users/mwiget/projects/temp/opencontrail
==> default: Running provisioner: shell...
default: Running: /var/folders/8m/0w01fsfn6j79rb_5x7npp1m40000gn/T/
==> default: stdin: is not a tty
==> default: Fix ssh to allow password login
==> default: ssh stop/waiting
==> default: ssh start/running, process 1701
==> default: Installing OpenContrail ...
==> default: apt-get update ...
==> default: installing curl ...
==> default: Reading package lists...
==> default: Building dependency tree...
. . .
(bulk of the install messages removed)
. . .
==> default: 2014-11-19 09:46:54:628479:
==> default: 2014-11-19 09:46:54:628595: Done.
==> default: 2014-11-19 09:46:54:628618: Disconnecting from done.
==> default: 2014-11-19 09:46:54:701249:
==> default: You can access horizon web UI
==> default: You can access OpenContrail web UI
==> default: all done.

That’s it! OpenContrail is rebooting and once its back up, is ready for action. The default UI username and password are admin/secret123 and can be changed in Access the CLI via ‘vagrant ssh’ and check the status of OpenContrail:

 $ vagrant ssh
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-39-generic x86_64)
* Documentation:
System information as of Wed Nov 19 09:47:09 UTC 2014
System load: 0.0               Memory usage: 1%   Processes:       57
Usage of /:  6.3% of 39.34GB   Swap usage:   0%   Users logged in: 0
Graph this data and manage this system at:
Get cloud support with Ubuntu Advantage Cloud Guest:
vagrant@vagrant-ubuntu-trusty-64:~$ contrail-status
== Contrail vRouter ==
supervisor-vrouter:           active
contrail-vrouter-agent        active
contrail-vrouter-nodemgr      active
== Contrail Control ==
supervisor-control:           active
contrail-control              active
contrail-control-nodemgr      active
contrail-dns                  active
contrail-named                active
== Contrail Analytics ==
supervisor-analytics:         active
contrail-analytics-api        active
contrail-analytics-nodemgr    active
contrail-collector            active
contrail-query-engine         active
== Contrail Config ==
supervisor-config:            active
contrail-api:0                active
contrail-config-nodemgr       active
contrail-discovery:0          active
contrail-schema               active
contrail-svc-monitor          active
ifmap                         active
== Contrail Web UI ==
supervisor-webui:             active
contrail-webui                active
contrail-webui-middleware     active
redis-webui                   active
== Contrail Database ==
contrail-database             active
contrail-database-nodemgr     active
== Contrail Support Services ==
supervisor-support-service:   active
rabbitmq-server               active

Access the UI at URL





Use vagrant commands to suspend, resume and destroy the virtual machine as needed.

$ vagrant destroy
default: Are you sure you want to destroy the 'default' VM? [y/N] y
==> default: Forcing shutdown of VM...
==> default: Destroying VM and associated drives...
==> default: Running cleanup tasks for 'shell' provisioner...