OpenStack User Tip: Add a new Image to OpenStack

Nick Chase, Mirantis Blog - January 19, 2016 -

You’re probably aware that launching an openStack instance (normally) involves an Image on which to base it. If you’ve been using OpenStack for a while, you’ve probably also run into a situation in which the image you need isn’t already available. Fortunately it’s easy to add a new image to an existing OpenStack cluster.

What’s an OpenStack image?

An OpenStack image is a “template” for a new instance. It could be as simple as a bare operating system ISO, or it could be a complete suite of applications that have been installed, configured, and saved as an image.

When you launch a new instance, one of the most common ways is to base it on an image, as in Figure 1:


Figure 1:  Launching an instance

Once you’ve specified that you want to boot from an image, you’ll need to choose the image from which you want to boot.  In this case, we’re booting from an image that simply represents the Ubuntu installer.

Where can I download OpenStack images?

While it’s possible to create your own images, in most cases you’re going to be downloading existing images.  Where you get them will depend on what it is you’re trying to accomplish, but here are some commonly used sources:

  • Cirros:  Often you’ll just want a minimal test image to use, and in fact many OpenStack distributions (including DevStack and Mirantis OpenStack) come with Cirros, which was designed for just that purpose.  You can download a Cirros image here.  The username is cirros, and the password is cubswin:).
  • Ubuntu:  You can get the latest long term support version of Ubuntu, 14.04 (Trusty Tahr) from the official Ubuntu site. You can use the ISO version, but for KVM it’s recommended that you use the qcow2 version, trusty-server-cloudimg-amd64-disk1.img.
  • Red Hat Enterprise Linux:  If you have a valid Red Hat subscription, you can download the Red Hat Enterprise Linux 7 KVM Guest Image.
  • Microsoft Windows: If you must use Windows, you can download the OpenStack Windows Server 2012 Standard Evaluation image from Cloudbase Solutions.

You can find a more exhaustive list of OpenStack images, including CentOS, Fedora, Debian, and OpenSUSE, in the OpenStack documentation.

How do I add an image to my OpenStack cluster?

Once you’ve identified the image that you want to add, you’ve got two choices.  You can either upload it, or if you don’t have it on your local drive, you can add it directly from the URL at which it resides.

To add the image from the OpenStack Dashboard (Horizon), follow these steps:

  1. Log into Horizon.
  2. Navigate to Project -> Compute -> Images.image2Figure 2:  List of images
  3. Click +Create Image.image3

    Figure 3: Create the image

  4. Enter the relevant information for the image you’re creating.  You’ll need to include:
    • Name: The name of the image, to be shown in the list of images in Horizon.
    • Description (optional): A simple description explaining what the image is, or what it’s for.
    • Image Source:  How to specify the image source depends on whether you choose Image File or Image Location.  If you have the image stored locally, choose Image File and click Choose File to specify the actual location on your local drive, as in Figure 3.  If not, choose Image Location and specify the URL for the image file, as in Figure 4.image4Figure 4:  Specify an image by location

      Specifying the location directly can be a much better answer for larger images, particularly if
      the OpenStack host has better bandwidth than your local connection supports, as the image will
      be transferred directly over high speed links.

    • Format:  Images can be specified in a variety of formats, from qcow2, the format for QEMU, to ISO, the same format used for CDs, to VDI, the format used by VirtualBox, to raw, which is essentially a block-by-block copy of the original.
    • Architecture:  Every CPU conforms to a specific architecture, such as x86_64, ppc64 for 64-bit PowerPC, or arm for, well, ARM. This field specifies the required architecture for VMs running this image.
    • Minimum Disk and Minimum RAM (optional): Specifying these optional values makes it possible to tell whether an image can be launched on a particular flavor of VM.
    • Copy Data:  If you’ve chosen to load the image from a URL, you can also decide whether to actually copy the image into Glance, or to simply note the URL. In the latter case, leave the box unchecked, and when a user specifies this image, OpenStack will pull a fresh copy.  (Note that while this method saves time when creating the image, it can make launching subsequent VMs much slower.)
    • Public:  If an image is specified as Public, anyone else on the cluster can see it, even from within another tenant.  (Admins will frequently use this method to make images available to all their users.)
    • Protected:  Make an image Protected to keep it from being deleted accidentally.  (Or on purpose, actually,  If you DO need to delete it, unprotect the image from the command line.)
  5. Click Create Image.Once the image has been created, you should see it in the list of images, as in Figure 5:image5Figure 5: Images available to the tenant.

From there, you should be able to use the new image to launch a new instance.

How do I add an image using the command line?

For completeness’ sake, let’s take a quick look at creating an image from the CLI. Assuming you’ve installed the glance client, sourced your credentials, and so on, you can execute a command such as:

glance --os-image-api-version 2 image-create --architecture x86_64c\
 --protected False --min-disk 1 --disk-format qcow2 --min-ram 256 \
 --file ./cirros-0.3.4-x86_64-disk.img

The command line client supports many more parameters than the Horizon client does; you can see all of them in the official OpenStack Image Service (Glance) documentation.

Looking for an easier way to deploy OpenStack?  OpenStack Fuel lets you deploy OpenStack with a few clicks of your mouse.Download it now with Mirantis OpenStack.

From Virtualization to Containerization
Learn how to move from monolithic to microservices in this free eBook
Download Now
Radio Cloud Native – Week of May 11th, 2022

Every Wednesday, Nick Chase and Eric Gregory from Mirantis go over the week’s cloud native and industry news. This week they discussed: Docker Extensions Artificial Intelligence shows signs that it's reaching the common person Google Cloud TPU VMs reach general availability Google buys MobileX, folds into Google Cloud NIST changes Palantir is back, and it's got a Blanket Purchase Agreement at the Department of Health and Human …

Radio Cloud Native – Week of May 11th, 2022
Where do Ubuntu 20.04, OpenSearch, Tungsten Fabric, and more all come together? In the latest Mirantis Container Cloud releases!

In the last several weeks we have released two updates to Mirantis Container Cloud - versions 2.16 and 2.17, which bring a number of important changes and enhancements. These are focused on both keeping key components up to date to provide the latest functionality and security fixes, and also delivering new functionalities for our customers to take advantage of in …

Where do Ubuntu 20.04, OpenSearch, Tungsten Fabric, and more all come together? In the latest Mirantis Container Cloud releases!
Monitoring Kubernetes costs using Kubecost and Mirantis Kubernetes Engine [Transcript]

Cloud environments & Kubernetes are becoming more and more expensive to operate and manage. In this demo-rich workshop, Mirantis and Kubecost demonstrate how to deploy Kubecost as a Helm chart on top of Mirantis Kubernetes Engine. Lens users will be able to visualize their Kubernetes spend directly in the Lens desktop application, allowing users to view spend and costs efficiently …

Monitoring Kubernetes costs using Kubecost and Mirantis Kubernetes Engine [Transcript]
Technical training
Learn Kubernetes & OpenStack from Deployment Experts
Prep for certification!
View schedule
Manage your cloud-native container environment with Mirantis Container Cloud

Wednesday, January 5 at 10:00 am PST
Mirantis Webstore
Purchase Kubernetes support