In OpenStack, images are pre-configured operating system files used to create instances. To launch instances using your own specific operating system configurations, you need to upload an image to the Compute service This section covers how to use, manage, and create images in our environment.

Available Images

Our platform provides a curated set of centrally maintained images for common operating systems. These include:

  • Ubuntu (LTS versions)
  • Debian
  • Rocky
  • Windows 10/11 Home and Pro

Accessing Images

In the dashboard, images are managed from the “Compute” > “Images” and use:

  • The tabs (“Current Project Images”, “Public Images”, “Shared Images”, “All Images”) to change the scope.
  • The filter/search bar above the table to narrow down the images list

To view older versions of images, use the OpenStack CLI with the following command: openstack image list --community

This command will display all centrally maintained images, including older versions that are not shown by default.

Using Older Image Versions

While we recommend using the latest images for security and performance reasons, you can still use older image versions if needed:

  1. Find the desired image ID using the command mentioned above.
  2. When launching an instance via CLI, specify the image ID:

openstack server create --image <old-image-id> ...

Using older image versions using the dashboard is not supported

Best Practices for Image Selection

  1. Using image names ensures that you’re using the latest image version : Whenever possible, use the most recent image versions to ensure you have the latest security patches and features.
  2. Using image IDs ensures that you always deploy using the same version : Regularly check for new image versions and plan to update your workflows accordingly.
  3. Document Usage: If you’re using an older image version, document the reason and set a reminder to revisit the decision periodically.

⚠ Community Images are deleted after 1 year

Using Images

Launching an Instance from an Image

  1. In the Skyline dashboard, go to “Compute” > “Instances”.
  2. Click “Launch Instance”.
  3. In the “Start Source” section on the left, select “Image”.
  4. Choose the operating system family from the icons at the top of the page (for example “Ubuntu”, “Windows”, “Debian”, “Rocky”, or “Others”).
  5. In the image table, select your desired image. You can use the filter bar above the table to narrow down the list.
  6. Proceed with the remaining steps of the wizard and click “Submit” to create the instance.

Image Management

Uploading a Custom Image

Step 1: Accessing the Image Creation Menu

  • Navigate to the Compute tab in the left-hand sidebar.
  • Select Images.
  • Click the Create Image button on the top right of the page.

Step 2: Image Source & Upload Type

The first step is to define how you want to import your image file. You have two options under Upload Type:

  • Upload File: Select this if the image file (e.g., .qcow2 or .iso) is located on your local computer. You will be prompted to browse and select the file.

  • File URL: Select this if the image is hosted on a remote server (HTTP/HTTPS). Enter the direct link to the image.

    Tip: This method is often faster for large images as the transfer happens directly between the remote server and the cloud, bypassing your local network connection.

Step 3: Image Configuration

Fill in the details to ensure the system handles your image correctly.

Basic Information
  • Name: Enter a clear, descriptive name for your image (e.g., Ubuntu-24.04-Custom).
  • Description: (Optional) Add notes about what this image contains (e.g., “Preconfigured with PyTorch 2.9.1 and CUDA 13.0”).
Formats

Correctly setting the formats is critical for the image to boot successfully.

  • Disk Format: This defines the underlying format of the image file.

    Recommendation: We strongly recommend using QCOW2 (QEMU Copy On Write). It is the standard format for OpenStack.

  • Container Format: This indicates the container format used by the image file.

    Recommendation: Set this to Bare. This indicates the image is not inside a container format (like OVF) and is a raw filesystem or disk image.

OS Details

These fields help the system identify the operating system and set up default access.

  • OS: Select the operating system family (e.g., Linux, Windows, CentOS, Ubuntu).

  • OS Version: Enter the specific version number (e.g., 24.04 or 11).

  • OS Admin: Define the default username used to log in to the instance.

    For Linux: Common defaults are root, ubuntu, centos, or cloud-user.

    For Windows: usually administrator.

System Requirements (Optional)

Setting these ensures users don’t try to launch this image on a Flavor (server size) that is too small to handle it.

  • Min System Disk (GiB): The minimum amount of disk space required. If your image is 10GB, enter 10.
  • Min Memory (GiB): The minimum amount of RAM required for the OS to boot smoothly.
Usage & Protection
  • Protected: Check this box to prevent the image from being accidentally deleted.
  • Usage Type: Select Common Server for standard VM usage.

Once all fields are configured, click the Confirm button at the bottom to begin the upload process.

Sharing Images

To share an image with another project:

  1. Go to the image details page
  2. Click “Edit Image” and go to the “Sharing” tab
  3. Enter the project ID you want to share with
  4. Set the status to “Accepted”

Creating a Snapshot

To create an image from an existing instance:

  1. Go to “Compute” > “Instances”
  2. In the actions column, select “Create Snapshot”
  3. Name your snapshot and click “Create Snapshot”

The snapshot will appear in your Images list.

Best Practices

  1. Regular Updates: Use the latest image versions to ensure you have the most recent security patches
  2. Image Optimization: Optimize your custom images for cloud use (e.g., cloud-init, proper drivers)
  3. Metadata: Add appropriate metadata to custom images for easier management
  4. Security: Ensure your custom images are properly hardened before uploading
  5. Version Control: Maintain a versioning system for your custom images

Image Requirements

  • Format: We support QCOW2 and RAW formats. QCOW2 is preferred for its smaller size and snapshot capabilities
  • Size: Images should be as small as possible to reduce storage costs and improve instance launch times
  • Drivers: Ensure images include the necessary drivers for our environment (e.g., virtio drivers for optimal performance)

Advanced Topics

Cloud-Init Support

Our images support cloud-init for instance initialization. You can provide user data when launching an instance to customize it on first boot.

Using Cloud-Init from the dashboard

When launching an instance:

  1. Start the instance creation process as usual

  2. When you reach the 3 : System config step:

    • Click on the “Expand Advanced Options” button
    • Paste your cloud‑init configuration (YAML) or a shell script in the “User Data” field
  3. Example cloud‑init (YAML) to create a user and install packages:

#cloud-config
package_update: true
package_upgrade: true
packages:
  - htop
  - git

users:
  - name: devuser
    groups: sudo
    shell: /bin/bash
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    ssh_authorized_keys:
      - ssh-rsa AAAA...your_public_key_here

runcmd:
  - echo "Custom image init complete" > /etc/motd
  1. Complete the remaining steps and click Confirm.
    The instance will run this configuration on first boot.

Using Cloud-Init from the Command Line

You can also provide user data via the OpenStack CLI.

  1. Save your cloud-init configuration to a file, for example:
cat > user-data.yaml << 'EOF'
#cloud-config
package_update: true
packages:
  - docker.io

runcmd:
  - systemctl enable --now docker
EOF
  1. Launch the instance with the --user-data option:
openstack server create \
  --flavor m1.small \
  --image Ubuntu-24.04 \
  --network MyPrivateNetwork \
  --key-name my-ssh-key \
  --user-data user-data.yaml \
  my-cloudinit-vm

Cloud-init will apply the configuration the first time the instance boots.

Verifying Cloud-Init Execution

Inside the instance:

# Check status
cloud-init status

# Check detailed logs
sudo cat /var/log/cloud-init.log
sudo cat /var/log/cloud-init-output.log

If cloud-init failed, errors will usually appear in these logs.

Image Building

For creating custom images, consider using tools like:

  • Packer
  • DIB (Disk Image Builder)

These tools can help automate the image creation process and ensure consistency.

Troubleshooting

  • If an image fails to upload, check the image format and ensure it meets our requirements
  • For instances that fail to launch, verify that the image is compatible with the selected flavor
  • If you encounter performance issues, ensure the image has the correct drivers for our environment

Image Lifecycle Management

We regularly update our provided images. Older versions may be deprecated and eventually removed. Plan to periodically update your instances to use the latest image versions.

For any issues with images or assistance in creating custom images, please contact our platform support team.