Devstack is a testing and development package for OpenStack. The official devstack website has excellent but terse installation instructions, which could be daunting to a newbie.
Normally, a traditional install is pretty straightforward but problems creep in when you have to go for some particular configuration or installation like cells or a simple code-test-debug setup, the information on the main site is insufficient.
In this blog, I will enumerate the steps for setting up a cell-ular devstack installation with one parent and one child. Parent will not be instantiating any VMs s it's only a 'command centre'.
yum install git vim
git clone https://git.openstack.org/openstack-dev/devstack
- cd devstack; vim local.conf
[[local|localrc]]4. Save the file and run 'stack.sh' script which will install vanilla devstack into your machine.
ADMIN_PASSWORD=secrete
DATABASE_PASSWORD=$ADMIN_PASSWORD
RABBIT_PASSWORD=$ADMIN_PASSWORD
SERVICE_PASSWORD=$ADMIN_PASSWORD
SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50
./stack.sh5. After installation, open up another file, 'nova.conf' in '/etc/nova' directory. You will need a superuser access to edit it.
vim /etc/nova/nova.conf
6. Alter the content in the file as per the instructions below. This will enable cells in the installation and will designate appropriate name and type to the cell. Parent machine will be 'api' cell and child will be 'compute' cell.
- In the parent machine
[cells]
enable=True
name=toplevel
cell_type=api
- In the child machine
[default]
quota_driver=nova.quota.NoopQuotaDriver
[cells]
enable=True
name=cell1
cell_type=compute
-
Change address of keystone and glance from local ip address to that of the parent machine. This is for making sure that the child cell uses key authorizations from the parent cell.
[keystone_authtoken]Now installation and configurations are now partially complete. Now we need to start the cell service on both parent and child. To do this, create a new shell in the existing screen terminal and run,
auth_host, identity_uri, auth_uri
[default]
keystone_ec2_url, ec2_dmz_host
[glance]
api_server
7. In parent,
cd /opt/stack/nova && /usr/bin/nova-cells --config-file /etc/nova/nova.conf & echo $! >/opt/stack/status/stack/n-cell-toplevel.pid; fg || echo "n-cell-region failed to start" | tee "/opt/stack/status/stack/n-cell-toplevel.failure"
8. Kill key, horizon, n-api services at parent using Ctrl+C
9. In child,
cd /opt/stack/nova && /usr/bin/nova-cells --config-file /etc/nova/nova.conf & echo $! >/opt/stack/status/stack/n-cell-cell1.pid; fg || echo "n-cell-child failed to start" | tee "/opt/stack/status/stack/n-cell-cell1.failure"P.S. If you change the cell name at parent or child, then make sure that the altered name is reflected in the command to invoke the cell services as described above.
10. Now, we need to let parent and child know of each other by pushing appropriate entries in the databases by using 'nova-manage' command. In the parent,
$ nova-manage cell create --name=cell1 --username=guest --password=secrete --hostname=--port=5672 --virtual_host=/ --woffset=1.0 --wscale=1.0
11. On the child
$ nova-manage cell create --name=toplevel --cell_type=parent --username=guest --password=secrete --hostname=12. Restart all commands including n-cell at both parent and child machine.--port=5672 --virtual_host=/ --woffset=1.0 --wscale=1.0
13. Check installation by first monitoring the consoles of any error message getting printed (most probably in red) and then booting an instance on the parent by using 'boot' command.
Some other handy resources for learning and tweaking with devstack parameters
- Multi-Node Devstack with Neutron and Cells (somewhat older)
In step 10, cell_type argument is not specified.
ReplyDelete