An Easier Way to Test Drive MidoNet, with Docker


as a result of our brain storms during the engineering meeting in Barcelona at the end of November we have created a new python-based installer that allows you to install MidoNet together with OpenStack inside containers on virtual or physical servers.

The purpose of this installer is to provide a way for a practical and fast implementation of our reference architecture for demo purposes as well as serve as an executable specification of our deployment documentation.

The difference to MidoStack is that this installer will use the Ubuntu packages from the MidoNet mirrors instead of building MidoNet from source.

If you are interested in trying out bleeding edge features of MidoNet or if you are developing at the tip of our source code you are encouraged to use the MidoStack developer QuickStart guide.

For building an OpenStack system using the MidoNet packages from the mirror you can download and use our new package-based MidoNet OpenStack installer from the following url:


The software itself is based on Fabric (a python based remote execution framework) and Cuisine.

Local flow control is implemented in a Makefile.

It is very easy to use, all you have to set up is a small and concise configuration file in yaml format where you define the servers and the local network used for the containers in the servers.

The containers itself are wired using a mesh VPN (based on tinc) which means that communication between the services in the containers is kept very secure and not visible to the outside world.

This way you can even use public servers from providers like OVH or Hetzner or cloud instances from Digital Ocean, Zetta or Amazon to bootstrap a test environment for looking at MidoNet fast and without investing a lot of hours.

All you need now to create a demo Open Stack installation is SSH connectivity to the servers running Ubuntu Linux and an existing local Ubuntu to download and activate the installer after setting your servers, IP addresses and assign the necessary roles to each server in the yaml file.

The Makefile will use sudo to prepare your machine with all the necessary prerequisites for running the installation.


The following picture shows a part of my configuration file, the servers and the role section, and what containers will be created during an installation.

orizuruYou can choose your own numbers for the local Docker networks, these IPs are only used for providing a secure underlay network model to the containers.

Also you can decide if you want to look at MEM, the enterprise version of MidoNet, or set up the freely available open source version of MidoNet.

All the services are started in the containers, using the upstart jobs if possible, otherwise they are started by running the necessary commands in screen sessions.

If you reboot the servers or shut down the containers you can run the installer Makefile again to restore the test installation.

Also you can destroy the containers without modification to your hosts.  This is very good.

You can use the hosts for installing MidoNet multiple times and test different versions, for example you can run upgrade tests and dry-run similar important operations tasks that come up in the life-cycle of an OpenStack installation.


When the installation is done, the gateways will use static routing and a veth pair to simulate the behaviour of a typical MidoNet edge node.

One of the future features we are currently also working on is to provide an automatic way for setting up BGP connectivity between Quagga running on physical servers and the MidoNet gateways inside the containerized MidoNet installation.

For this we define the Quagga gateways and AS numbers also in the yaml and the installer will set up everything.

Thank you for trying out MidoNet and enjoy the new year!





Alexander Gabert

i write text into terminals to make servers do important things.


Leave a Reply

Your email address will not be published. Required fields are marked *