Uploading Images

Before we can launch instances, we need to upload a virtual disk image into Nova. There are a number of different images that you can use with your Nova installation. You can also make your own images.

For the purposes of our test server setup, let’s use Ubuntu’s Enterprise Cloud images. We’ll download the newest Ubuntu Server image for use on our cloud.

# wget \
>http://uec-images.ubuntu.com/server/releases/natty/release/\
>ubuntu-11.04-server-uec-amd64.tar.gz

Once we have that image, we need to upload it into the Nova image store. How we do this varies depending on the image store that we’ve chosen. For our StackOps installation (which uses the nova-objectstore), we can use the uec-publish-tarball utility. To use this utility, give it the compressed image and container/bucket name (I’ve used images as my bucket name for this example).

# uec-publish-tarball ubuntu-11.04-server-uec-amd64.tar.gz images
Mon Jul  4 13:25:19 PDT 2011: ====== extracting image ======
Warning: no ramdisk found, assuming '--ramdisk none'
kernel : natty-server-uec-amd64-vmlinuz-virtual
ramdisk: none
image  : natty-server-uec-amd64.img
Mon Jul  4 13:25:32 PDT 2011: ====== bundle/upload kernel ======
Mon Jul  4 13:25:34 PDT 2011: ====== bundle/upload image ======
Mon Jul  4 13:26:46 PDT 2011: ====== done ======
emi="ami-6683ba18"; eri="none"; eki="aki-7eea4179";

The emi="ami-6683ba18” part is what we are interested in. It is the machine image. We’ll use it later when we launch an instance.

Now that we have images, let’s make sure that Nova knows the image is available and ready to use. We can check this through the EC2 API with the euca-describe-images utility. Make sure you’ve sourced your user credentials before executing this command.

# euca-describe-images
IMAGE  aki-7eea4179 images/natty-server-uec-amd64-vmlinuz-virtual.manifest.xml
available public x86_64 kernel
IMAGE  ami-6683ba18 images/natty-server-uec-amd64.img.manifest.xml  available
public x86_64 machine aki-7eea4179

We can also check for images through the OpenStack API with the nova command-line tool.

$ nova image-list
+------------+------+--------+
|     ID     | Name | Status |
+------------+------+--------+
| 1719908888 | None | ACTIVE |
| 2129281401 | None | ACTIVE |
+------------+------+--------+