Skip to main content

Marketplace Apps — OpenStack Requirements

This page covers what an OpenStack provider admin must prepare before Marketplace Apps can deploy successfully. If you are using CloudStack, see CloudStack — Image & Startup Requirements.

Common setup first

Complete the platform-neutral CMP configuration in Configure Marketplace Apps in CMP before returning here for OpenStack-specific image requirements.


How CMP delivers the startup script on OpenStack​

CMP uses Nova user-data to deliver the rendered startup script to the VM at first boot. Nova delivers the startup information to the VM through the OpenStack instance initialization mechanism, where it is processed by cloud-init (Linux) or cloudbase-init (Windows) inside the guest to execute the script.

Admin defines Startup Script on CMP image/template (with {{VAR}} placeholders)
↓
Customer fills environment variables at Create Instance
↓
CMP substitutes customer values into the script
↓
CMP passes user-data to Nova server creation request
↓
Nova delivers the startup information to the VM through the OpenStack instance initialization mechanism
↓
cloud-init / cloudbase-init processes user-data inside the guest
↓
Startup script executes — application is configured

For this to work, two conditions must be met:

  1. The Glance image has cloud-init (Linux) or cloudbase-init (Windows) installed and configured.
  2. The CMP image/template is set to Image Type = Market Place App and has a startup script configured.

1. Prepare the Glance image for Marketplace Apps​

cloud-init is required (Linux)​

The Glance image must have cloud-init installed and running at first boot. Cloud-init is responsible for reading and processing the user-data (including the CMP startup script) delivered by Nova.

Without cloud-init, the startup script is delivered to the VM but never executed — the application is not configured.

Required cloud-init capabilities:

CapabilityWhy needed
Process user-data at first bootExecute the CMP startup script
Support #!/bin/bash shebang scriptsCMP uses shell scripts for Marketplace configuration
OpenStack instance initialization / metadata accessRetrieve user-data from OpenStack
Without cloud-init, Marketplace deployments silently fail

The VM boots and the infrastructure appears healthy in CMP, but the Marketplace startup script is never executed — no application configuration takes place inside the guest.

cloudbase-init for Windows images​

Windows Marketplace images require cloudbase-init to process user-data. Without it, scripts are not executed at first boot.

Use official cloud images​

Prefer distribution-provided cloud images — these come with cloud-init pre-installed and pre-configured:

  • Ubuntu Cloud (ubuntu-*.img)
  • Debian Cloud
  • Rocky Linux / AlmaLinux / CentOS Stream cloud images
  • RHEL cloud images

Do not use installer ISOs as Marketplace base images — they do not include cloud-init and are not designed for automated first-boot configuration.

Clean cloud-init state before capturing​

If you build a Marketplace image by customizing an existing VM, clean the cloud-init state before creating the Glance snapshot. A dirty cloud-init state causes cloud-init to skip first-boot steps (including your startup script) when the customer's VM is provisioned.

Full image preparation requirements and checklist: Preparing CMP-compatible images (OpenStack).


2. Configure the CMP template as a Marketplace App​

Path: Settings → Orchestrator → Templates → Add Template (or edit existing)

Set Cloud Provider = OpenStack​

Select OpenStack as the Cloud Provider, choose the correct Cloud Provider Setup and Zone.

Set Image Type to Market Place App​

Set Image Type to Market Place App, then select the Marketplace App and Version you created in CMP. This links the Glance image to the app.

See Link templates for the full workflow.

Set Password Method​

For OpenStack Linux Marketplace images, use Using Startup Script as the password method (consistent with cloud-init based workflows).

See Configuring images in CMP (OpenStack) for full field descriptions.

Write the startup script with placeholders​

The Start up Script field on the CMP template (same field as CloudStack) is used to define the Marketplace startup script. CMP lists Placeholder buttons for the Marketplace App's environment variables.

Use {{VAR_NAME}} syntax in the script. At deploy time, CMP substitutes the customer's entered values and passes the full script as Nova user-data.

Example — configure a database with customer-supplied credentials:

#!/bin/bash
mysql -u root -e "CREATE DATABASE {{db_name}};"
mysql -u root -e "CREATE USER '{{db_user}}'@'localhost' IDENTIFIED BY '{{db_password}}';"
mysql -u root -e "GRANT ALL PRIVILEGES ON {{db_name}}.* TO '{{db_user}}'@'localhost';"

Example — open a port configured by the customer:

#!/bin/bash
ufw allow {{port}}
No environment variables?

If the Marketplace App has no environment variables, the startup script still runs — just with no customer-supplied substitutions. Document where credentials are written on the guest in the per-app email content.


3. Script size limits on OpenStack​

OpenStack imposes user-data size limits at the deployment level. The exact limit depends on your Nova configuration and OpenStack distribution.

The CMP global setting max_startup_script_size_in_bytes controls the maximum size of a customer-entered startup script. This applies to OpenStack as well as CloudStack.

No fixed CMP orchestrator limit for OpenStack

Unlike CloudStack (where CMP cross-checks against vm.userdata.max.length), the OpenStack deployment's Nova user-data limit is not a CMP-controlled setting. Keep your startup scripts reasonably sized and validate against your specific OpenStack environment.

See Startup script size for the CMP-level max_startup_script_size_in_bytes setting.


Checklist​

ItemWhere to configure
Glance image has cloud-init installed and enabledOpenStack / image
cloud-init state cleaned before image captureOpenStack / image
OpenStack instance initialization / metadata service accessible from the VMOpenStack networking
CMP image/template Image Type = Market Place App; app and version selectedSettings → Orchestrator → Templates
Password Method = Using Startup Script (Linux)Settings → Orchestrator → Templates → User Config
Startup script written with {{VAR}} placeholders matching environment variablesSettings → Orchestrator → Templates → Start up Script
Script size within CMP and OpenStack deployment limitsCMP Global Settings + OpenStack Nova configuration

Was this page helpful?
Found something that could be improved?