Getting started with OpenStack Nova

From FedoraProject

Revision as of 16:01, 31 August 2011 by Mdomsch (Talk | contribs)

Jump to: navigation, search


Initial Installation

To get started with OpenStack's Compute Service (Nova), you can install it on Fedora 16 from a testing repository:

$> sudo wget -O /etc/yum.repos.d/fedora-openstack.repo
$> sudo yum install --enablerepo=updates-testing  openstack-nova

Nova requires the RabbitMQ AMQP messaging server to be running:

$> sudo service rabbitmq-server start

Nova requires the libvirtd server to be running:

$> sudo service libvirtd start

It also currently requires iptables to be disabled:

$> sudo service iptables stop

And worse, SELinux needs to be disabled:

$> sudo setenforce 0

Next, you should enable the Glance API and registry services:

$> for svc in api registry; do sudo service openstack-glance-$svc start; done

The openstack-nova-volume service requires an LVM Volume Group called nova-volumes to exist. We simply create this using a loopback sparse disk image.

$> sudo dd if=/dev/zero of=/var/lib/nova/nova-volumes.img bs=1M seek=10k count=0
$> sudo vgcreate nova-volumes $(sudo losetup --show -f /var/lib/nova/nova-volumes.img)

Now you can start the various services:

$> for svc in api objectstore compute network volume scheduler; do sudo service openstack-nova-$svc start; done

Check that all the services started up correctly and look in the logs in /var/log/nova for errors. If there are none, then Nova is up and running!

Admin User, Project and Network Setup

Now you should create an admin user, project and network. I'm going to name them all after myself:

$> sudo nova-manage user admin markmc
$> sudo nova-manage project create markmc markmc
$> sudo nova-manage network create markmc 1 256 --bridge=br0

Then download a set of credentials for this user/project:

$> sudo nova-manage project zipfile markmc markmc
$> sudo chmod 600
$> sudo chown markmc:markmc

Unpack the credentials, source the novarc and add an SSH keypair:

$> mkdir novacreds && cd novacreds
$> unzip ../
$> . ./novarc
$> ssh-keygen -f nova_key
$> euca-add-keypair nova_key > nova_key.priv
$> chmod 600 nova*


To run an instance, you're going to need an image. Two options are described below:

  1. Building a Fedora 15 image using Oz
  2. Downloading Ubuntu based minimal images used by OpenStack developers for testing

Building an Image With Oz

You can very easily build an image using Oz. Simply do:

$> cat > test.tdl << EOF
 <description>My Fedora 15 x86_64 template</description>
  <install type='iso'>
$> sudo oz-install test.tdl

Now, since Oz needs to download the install ISO, this will take an age the first time. Subsequent builds will be far quicker, though, since the image is cached.

One built, you simply have to register the image with Nova:

$> sudo nova-manage image image_register /var/lib/libvirt/images/fedora15_x86_64.dsk markmc f15
$> glance index

The last command should return a list of the images registered with the Glance image registry.

Downloading Existing Images

If you don't want to build an image, just download this set of images commonly used by OpenStack developers for testing and register them with Nova:

$> wget
$> tar -xvzf images.tgz
$> sudo nova-manage image convert images/

Launch an Instance

One last step before launching - load the nbd kernel module so that injecting SSH key files into the filesystem on the qcow2 image works:

$> sudo modprobe nbd

You should now be able to launch an image:

$> euca-run-instances f15 -k nova_key

Or, in the case of the downloaded images:

$> euca-run-instances ami-tiny --kernel aki-lucid --ramdisk ari-lucid -k nova_key

And then observe the instance running, observe the KVM VM running and SSH into the instance:

$> euca-describe-instances
$> sudo virsh list
$> ssh -i nova_key.priv root@

Note, if you're using the image build using Oz above, then SSH key injection doesn't currently work but you may log in using the root password 'ozrootpw'.