Skip to main content

Overview

An image in Xloud serves as more than a boot disk — it is the authoritative template for instance provisioning. A well-managed image catalog ensures consistent deployments, enforces approved operating system versions, and supports multi-project sharing with access control. This guide covers using images as templates, organizing a catalog, publishing community images, exporting images for external use, and managing versions.

Using Images as Templates

Every instance launch derives from an image. Treating images as immutable, versioned templates — rather than ad-hoc uploads — produces consistent, repeatable deployments. Template design principles:
  • One image per OS version and configuration profile (e.g., ubuntu-24.04-base, ubuntu-24.04-nginx)
  • Images are never modified after publishing — create a new version instead
  • Customization at launch time uses cloud-init user data, not image-level changes
  • Golden images include security hardening, required packages, and licensing pre-applied

Upload or build the template image

Navigate to Project → Images → Images and click Create Image.Set Visibility to Private while the image is being validated, then promote to Shared or Community when ready.

Add template metadata

After uploading, click the image name and select Update Metadata. Use standard image properties to communicate template purpose:
PropertyExample Value
os_distroubuntu
os_version24.04
hw_disk_busvirtio
hw_vif_modelvirtio
descriptionUbuntu 24.04 LTS base template v1.2

Launch from the template

When creating an instance, select the image from the Source step. The instance inherits all hardware properties defined in the image metadata.
Template in use — instances launched from this image receive consistent hardware configuration.

Image Catalog Management

A catalog is the set of approved, maintained images available to tenants. Administrators control what appears in the catalog by managing image visibility and metadata.

Visibility Levels

VisibilityWho Can SeeUse Case
privateOwner project onlyDevelopment, staging images not ready for sharing
sharedOwner + explicitly shared projectsControlled sharing with specific teams
communityAll tenants (read-only for non-admin)Approved OS catalog available platform-wide
publicAll tenants (admin-controlled)Platform-wide golden images
Only users with the admin role can set image visibility to public or community. You can set your own images to shared and add project members to the sharing list.

Promote an Image to the Catalog

Navigate to Admin → Image → Images, find the image, click Edit Image, and set Visibility to Community or Public.

Community Images

Community images are images made available to all tenants without requiring explicit sharing grants. They are managed by administrators and appear in every project’s image list.
Create a community image
openstack image create \
  --disk-format qcow2 \
  --container-format bare \
  --file rocky-linux-9.qcow2 \
  --property os_distro=rocky \
  --property os_version=9 \
  --community \
  rocky-linux-9-v1.0
Decommission a community image (hide from catalog)
openstack image set \
  --private \
  rocky-linux-9-v1.0
Setting an image back to private does not delete running instances that were launched from it. Only future launches are affected.

Image Export

Images can be exported for use outside the platform — for migration to another environment, backup archiving, or external distribution.
Navigate to Admin → Image → Images, select the image, and click Actions → Download. The image file is downloaded in its native format (QCOW2 or RAW depending on upload format).
For large images, use the Glance image import deactivate/reactivate API to pause an image before export to ensure consistency:
Deactivate image before export (prevents modification)
openstack image deactivate <image-id>
openstack image save --file large-image.qcow2 <image-id>
openstack image reactivate <image-id>

Image Versioning

Xloud Image Service does not enforce versioning natively — version tracking is implemented through naming conventions and image properties. The recommended approach: Naming convention: <os>-<version>-<profile>-v<major>.<minor> Examples:
  • ubuntu-24.04-base-v1.0
  • ubuntu-24.04-base-v1.1
  • ubuntu-24.04-nginx-v2.0
Deprecation workflow:
Mark old version as deprecated
openstack image set \
  --deactivated \
  --property deprecated=true \
  --property replacement=ubuntu-24.04-base-v1.1 \
  ubuntu-24.04-base-v1.0
Hide deprecated image from tenant catalog
openstack image set \
  --private \
  ubuntu-24.04-base-v1.0
Keep deprecated images in private visibility (not deleted) until you verify no instances are running from them. Check with: openstack server list --all-projects --image <image-id>

Sharing Images Between Projects

Navigate to Project → Images → Images, click the image name, select Share Image, and enter the target project ID.The target project administrator must accept the share from Project → Images → Images → Shared with Me.

Next Steps

Storage Backends

Configure RBD, Swift, S3, or file store as the image storage backend

Image Properties

Set hardware and scheduler properties on images to control instance behavior

Image Security

Sign images and enforce signature verification at launch time

Upload Image

Upload custom images from ISO, QCOW2, RAW, or VMDK formats