Mix and Match Installation with Devstack

This tutorial will guide you through installing the Mix and Match proxy on a VM with Devstack. The proxy allows you to pick and choose which service providers to use for the needed services.

More information on the installation process


Clone the github repository and install dependencies in a virtual environment.

git clone https://github.com/openstack/mixmatch
virtualenv venv 
source venv/bin/activate
cd mixmatch
pip install -r requirements.txt 
python setup.py install 

Editing the Mixmatch Configuration File

Create a directory called mixmatch in etc and copy the sample configuration into the newly created directory.

sudo mkdir /etc/mixmatch
cp /home/ubuntu/mixmatch/etc/mixmatch.conf.sample /etc/mixmatch/mixmatch.conf 
sudo vi /etc/mixmatch/mixmatch.conf

Currently, only the Cinder and Glance services are supported. Make the following changes to the mixmatch.conf to correctly set up the endpoints of the relevant services. Also, make sure the password in the configuration file matches the one in your admin file.


To add or change a service provider, you must create an option group for each provider in mixmatch.conf. The option group must contain the service provider’s name in the format [sp_<service_providers_name>], the URI for connecting to the notification messagebus, the keystone auth url, and the endpoints for each enabled service.

Also, add the service provider’s name to service_providers in [DEFAULT]. For example:

enabled_services=image, volume

Make the following changes or additions to your admin file. The admin file can be found at devstack/acccrc/admin/admin.

export OS_AUTH_URL="http://your_private_ip_address/identity/v3"

Changing Openstack Endpoints to the Proxy

To set up the proxy for Glance, you must first delete the image endpoint. Then, create a new endpoint directed to the proxy.

openstack endpoint delete <glance_endpoint_id>
openstack endpoint create --region RegionOne --enable image public 'http://your_private_ip:5001/image'

To set up the proxy for Cinder, you must first delete three volume endpoints. Then, create three new endpoints directed to the proxy.

openstack delete <cinder_endpoint_id> 
openstack delete <cinderv2_endpoint_id>
openstack delete <cinderv3_endpoint_id>
openstack endpoint create --region RegionOne --enable volume public 'http://your_private_ip:5001/volume/v1/(project_id)s'
openstack endpoint create --region RegionOne --enable volumev2 public 'http://your_private_ip:5001/volume/v2/(project_id)s'
openstack endpoint create --region RegionOne --enable volumev3 public 'http://your_private_ip:5001/volume/v3/(project_id)s'

Editing the Nova and Cinder Configuration Files

For Nova, make the following changes to nova.conf.


For Cinder, make the following changes and additions to cinder.conf.


driver = messaging
topics = notifications

Finally, restart the glance, cinder, and nova services.

sudo systemctl restart devstack@g-* 
sudo systemctl restart devstack@c-* 
sudo systemctl restart devstack@n-* 

Running the Proxy

It is advised to run the proxy in a screen so that the proxy does not break if your ssh session dies.

screen -S proxy
source venv/bin/activate