## 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](http://mixmatch.readthedocs.io/en/latest/installation.html) ### Installation Clone the github repository and install dependencies in a virtual environment. ```shell 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. ```shell 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. ```shell [DEFAULT] service_providers=default [auth] auth_url="https://localhost/identity/v3" [sp_default] auth_url="https://localhost/identity/v3" image_endpoint="http://localhost/image" ``` 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_]`, 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: ```shell [sp_example] sp_name=example messagebus="rabbit://stackrabbit:stackqueue@localhost" auth_url="http://localhost/identity/v3" image_endpoint="http://localhost/image" volume_endpoint="http://localhost:8776" 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`. ```shell export OS_AUTH_URL="http://your_private_ip_address/identity/v3" export OS_IDENTITY_API_VERSION=3 ``` ### 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. ```shell openstack endpoint delete 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. ```shell openstack delete openstack delete openstack delete 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`. ```shell [glance] api_servers=http://your_private_ip_address:5001/image ``` For Cinder, make the following changes and additions to `cinder.conf`. ```shell [default] glance_api_servers=http://your_private_ip_address:5001/image [oslo_messaging_notifications] driver = messaging topics = notifications ``` Finally, restart the glance, cinder, and nova services. ```shell 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. ```shell screen -S proxy source venv/bin/activate /home/ubuntu/mixmatch/run\_proxy.sh ```