Quark is not currently designed to work with DevStack (but it can with the instructions below). We mention this because these instructions can become invalid if and when changes are pushed to DevStack. Please also not that once Quark+Neutron+DevStack+Tempest are wired up, the Tempest tests are failing. Please watch this Quark Github Issue for updates on this.
Ensure you have a user already with sudo rights. If you need one, do this as root:
/usr/sbin/adduser stack echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
Switch to user with sudo rights:
sudo su - stack # or whatever user you already have (instead of stack)
Clone devstack:
git clone https://github.com/openstack-dev/devstack
Go into devstack folder:
cd devstack
Create the local.conf configuration file that DevStack needs (localrc is inside it now) with Neutron as an anabled service (NOTE: This notation is explained here):
[[local|localrc]] DATABASE_PASSWORD=password ADMIN_PASSWORD=password SERVICE_PASSWORD=password SERVICE_TOKEN=password RABBIT_PASSWORD=password # Enable Logging LOGFILE=/opt/stack/logs/stack.sh.log VERBOSE=True LOG_COLOR=True SCREEN_LOGDIR=/opt/stack/logs # Pre-requisite ENABLED_SERVICES=rabbit,mysql,key # Horizon (always use the trunk) ENABLED_SERVICES+=,horizon HORIZON_REPO=https://github.com/openstack/horizon HORIZON_BRANCH=master # Nova ENABLED_SERVICES+=,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch IMAGE_URLS+=",https://launchpad.net/cirros/trunk/0.3.0/+download/cirros-0.3.0-x86_64-disk.img" # Glance ENABLED_SERVICES+=,g-api,g-reg # Neutron ENABLED_SERVICES+=,q-api,q-svc,q-agt,q-dhcp,q-l3,q-lbaas,q-meta,neutron # Cinder ENABLED_SERVICES+=,cinder,c-api,c-vol,c-sch # Tempest ENABLED_SERVICES+=,tempest
Remove Python's six packge:
sudo rm -f /usr/lib/python2.7/dist-packages/six.py /usr/lib/python2.7/dist-packages/six.pyc # Old version of six package in /usr/lib/python2.7/dist-packages/ crashes # quark server
Install Devstack:
./stack.sh
Install aiclib:
sudo pip install aiclib # the reason for sudo here is if you don't you'll get permission denied when it tries to install to /usr/local/lib/python2.7/dist/packages
Install quark:
cd /opt/stack #the folder where devstack installed all the services git clone https://github.com/rackerlabs/quark cd quark sudo python setup.py develop # the reason for sudo here is if you don't you'll get permission denied when it tries to install to /usr/local/lib/python2.7/dist/packages
Validate quark installed:
pip freeze | grep quark # should see something like: # -e git+http://github.com/rackerlabs/quark@ff5b05943b44a44712b9fc352065a414bb2a6bf9#egg=quark-master
Now edit the /etc/neutron/neutron.conf file to setup Quark as the core plugin:
vim /etc/neutron/neutron.conf # Search for line containing 'core_plugin = ' and replace it with # 'core_plugin = quark.plugin.Plugin' # # Search for line containing 'service_plugins = ' and remove # 'neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,' from # service plugins list
Stop Neutron by going into the screen session and going to the q-svc window and pressing ctrl-C:
screen -r # or go into devstack clone and then type ./rejoin-stack.sh # press ctrl+6 to go to q-svc window ctrl+C
Go back into screen and restart neutron (q-svc window):
screen -r stack # or go into folder where you cloned devstack then type ./rejoin-stack.sh # if screen command returns 'Cannot open your terminal /dev/pts/0' execute 'sudo chmod o+rwx /dev/pts/0' # go to q-svc window (ctrl+a, 7 currently does it) # previous command that devstack used to start neutron should be in history, press up arrow key to see it
You shouldn't receive any errors. To validate Quark has started up, you can scroll up in q-svc screen window (ctrl+a, esc, page-up) and look for the following lines:
DEBUG neutron.service [-] core_plugin = quark.plugin.Plugin ... DEBUG neutron.service [-] QUARK.default_ipam_strategy=ANY DEBUG neutron.service [-] QUARK.default_net_strategy={} DEBUG neutron.service [-] QUARK.default_network_type=BASE DEBUG neutron.service [-] QUARK.ipam_driver=quark.ipam.QuarkIpam DEBUG neutron.service [-] QUARK.ipam_reuse_after=7200 DEBUG neutron.service [-] QUARK.net_driver=quark.drivers.base.BaseDriver DEBUG neutron.service [-] QUARK.strategy_driver=quark.network_strategy.JSONStrategy
- you won't be able to create ports until you've added at least one mac_address_range (use this script to do it, changing host IP and admin password)