Skip to main content

Virtual Machine Packages

Virtual Machine (VM) packages define the compute bundles (vCPU and RAM) that customers select when provisioning instances. Each predefined package in CMP maps to one CloudStack compute offering through the Select Offering field.

Storage is configured separately — root disk size and pricing use Volumes packages when the override disk option is enabled (recommended).

Before you begin

Ensure the following are already configured:

  • Cloud Provider Setup is connected, with Enable Override Disk Offering set to Yes (recommended)
  • Zones are mapped in CMP for each datacenter region
  • Templates are configured for the zones where packages will be sold
  • Compute offerings exist in CloudStack for each package size you plan to sell

CMP path: Settings → Billing Setup → Rate Cards → Default → Packages → Virtual Machine Virtual Machine Package

VM provisioning and storage architecture scenarios

CloudStack and CMP support two primary infrastructure architecture models for VM provisioning. The chosen model determines whether compute (CPU and RAM) and storage (root disk) are decoupled as independent offerings or bundled into a single offering.

Critical — mutual exclusivity at initial CMP setup

At CMP, only one option works per Cloud Provider Setup: either separate offerings (Enable Override Disk Offering = Yes) or bundled storage (Enable Override Disk Offering = No).

Both options cannot be set together or mixed within the same Cloud Provider Setup. You must decide this approach during initial Cloud Provider Setup (Wizard Step 2 — Provider Config) before creating production packages and provisioning customer instances.

In this architecture, CPU and memory are provisioned through a compute-only offering in CloudStack, while the root disk is provisioned through a separate disk offering (managed in CMP via Volumes packages).

Shared storage requirement and CloudStack DRS

  • Shared storage requirement: Primary storage must be shared between all hypervisor hosts in the cluster or zone (such as Ceph RBD, NFS, shared SAN/iSCSI, or Fibre Channel).
  • DRS and placement policy: Because storage is accessible across all hosts, CloudStack's Distributed Resource Scheduler (DRS) or VM placement planner can deploy compute resources (CPU and memory) on any eligible host according to host capacity and load-balancing policies. Meanwhile, the root volume can reside on any compatible shared primary storage pool and remains fully accessible from whichever compute host runs the VM.

Setting storage inside the same compute offering is technically supported in CloudStack, but is not recommended in shared storage environments because:

  1. Tightly coupled compute and storage: Storage becomes permanently bound to the compute tier.
  2. VM downgrade challenges (data loss risk): In CloudStack, compute-only packages can be downgraded (reducing CPU or RAM) safely through VM Downgrade. However, storage cannot be safely shrunk downward because reducing filesystem and partition sizes carries a severe risk of filesystem corruption and data loss. When storage is bundled with compute, downgrading the package is either blocked or risks data destruction. Decoupling compute and storage ensures that compute can be resized while the root volume remains completely safe at its existing allocation.
  3. Stoppable VM billing (pausing stopped VMs): CMP includes a workflow (Stoppable Services via enable_stoppable_service_billing = true) that allows pausing billing for stopped VMs:
    • When a customer shuts down a VM, only CPU and memory billing is paused.
    • Storage must continue to be billed regardless of whether the VM is in a Running or Stopped state, because primary storage disk space remains consumed.
    • With separate offerings, CMP cleanly halts hourly compute metering while continuing the volume billing meter. If storage is bundled in the compute offering, this feature is not applicable because CMP cannot decouple storage charges from compute.

CMP configuration

In CMP Cloud Provider Setup (Wizard Step 2 — Provider Config), set Enable Override Disk Offering to Yes.


Scenario 2: Storage bundled with compute offering (Local / non-shared storage)

In certain infrastructure configurations, primary storage cannot be shared across hosts — such as hypervisors using direct-attached local disks (host-internal NVMe, SSD, or HDD).

Compulsory bundled offerings

  • Because local storage is physically restricted to an individual hypervisor host, compute and storage cannot reside on different physical servers.
  • In this configuration, it is compulsory to create CloudStack compute offerings with storage bundled. Compute and root disk storage must be scheduled together on the specific host that owns the physical disk pool.

Operational constraints

  • No separate storage selection: Customers cannot select an independent root disk size or volume type at CMP provisioning; the root disk size is dictated entirely by the CloudStack compute offering.
  • No VM downgrades: Moving to a lower package tier is restricted because bundled storage cannot be safely shrunk without data loss.
  • No stoppable VM billing pause: CMP cannot pause CPU/RAM billing while continuing to charge for storage. Stoppable service pause is not applicable when storage is bundled into the compute SKU.

CMP configuration

In CMP Cloud Provider Setup (Wizard Step 2 — Provider Config), set Enable Override Disk Offering to No.


Architecture comparison matrix

Architectural dimensionScenario 1: Separate offerings (Recommended)Scenario 2: Bundled offering (Local storage)
Primary storage typeShared storage across all hosts (Ceph, NFS, SAN/iSCSI)Local storage directly attached to each host
CloudStack DRS & placementCompute scheduled on any host; storage pool accessible from all hostsCompute and root disk locked to the host owning the local disk
CMP Provider ConfigEnable Override Disk Offering = YesEnable Override Disk Offering = No
Root disk selectionCustomer selects volume package and size at provisioningFixed by the CloudStack compute offering
VM Downgrade (CPU/RAM down)Supported (hourly plans) — storage remains unchangedNot supported — cannot safely shrink bundled storage
Stoppable VM billingSupported — pauses CPU/RAM, continues billing storageNot applicable — cannot decouple storage charges from compute
Mutual exclusivityOnly one option active per Cloud Provider SetupOnly one option active per Cloud Provider Setup

CloudStack compute offering requirements

CMP provisions predefined VM packages using fixed CloudStack compute offerings. The offering selected in CMP (Select Offering) must match the vCPU and RAM defined on the package.

For background on compute offering types, see the Apache CloudStack compute offering guide.

Offering model selection

As detailed in VM provisioning and storage architecture scenarios, choose either Compute-only + override disk (recommended for shared storage) or Storage bundled in compute offering (compulsory for local storage). Remember that only one model can be active at a time on a Cloud Provider Setup.

Fixed offerings for predefined packages

Create one fixed compute offering in CloudStack for each predefined package tier you sell — for example, 2vCore-2GB Memory for a 2 vCPU / 2 GB RAM package.

CloudStack settingCMP requirement
Compute Offering TypeFixed offering — CPU and RAM are predefined
# of CPU coresMust match vCore CPU on the CMP package
Memory (in MB)Must match Memory (In MB) on the CMP package
CPU (in MHz)Set to a valid speed for your hypervisor hosts (for example, 2000 MHz). Must align with Custom Compute CPU Speed in Cloud Provider Setup when using custom packages
Root disk / storageNot included in the offering — use compute-only configuration
PublicYes — offering must be visible to the DomainAdmin account CMP uses
ZoneAvailable in the same zone mapped in CMP

Example: for package 2vCore-2GB Memory, create a CloudStack offering named 2vCore-2GB Memory with 2 CPU cores and 2048 MB RAM, scoped to the target zone.

CloudStack Offering scope and visibility

  • Scope each offering to the correct zone(s) — offerings not available in a zone cannot be used for packages in that zone
  • Mark offerings Public (or assign them to the CMP DomainAdmin domain) so they appear in the Select Offering dropdown
  • CloudStack does not allow material changes to an offering after creation — plan CPU/RAM values before creating production offerings

Creating a compute offering in CloudStack

Follow the steps in Compute-only with override disk (recommended) or Storage bundled in compute offering depending on the model chosen at initial CMP setup.

For each predefined package tier, repeat the CloudStack steps with matching CPU and RAM values. Offering names should be clear — CMP admins select them from the Select Offering dropdown when creating packages.

Use this model when storage is billed separately through CMP Volumes packages and customers choose root disk size at provisioning time.

CloudStack — create the compute offering

  1. Log in to the CloudStack UI with admin privileges
  2. Navigate to Service Offerings → Compute Offering
  3. Click Add Compute Offering
  4. Set Compute Offering Type to Fixed offering
  5. Enter Name, # of CPU cores, CPU (in MHz), and Memory (in MB) — for example, 2vCore-2GB Memory with 2 cores and 2048 MB RAM
  6. Enable Compute only Disk Offering
  7. CloudStack shows a disk section and creates an internal compute-only disk offering linked to this compute offering. Set Storage type and Storage tags to values compatible with your primary storage pools — this satisfies CloudStack's compute-only offering model. You do not set customer root disk size here.
  8. Set Public to Yes and select the target Zone(s)
  9. Click Add

Screenshot: CloudStack — Add Compute Offering with Compute only Disk Offering enabled

Compute offering vs disk offering at VM creation

These are two different objects in CloudStack:

ObjectCreated whereUsed for
Compute offeringService Offerings → Compute OfferingCPU and RAM — mapped in CMP VM package (Select Offering)
Disk offeringService Offerings → Disk OfferingRoot disk size, storage type, tags, IOPS — mapped in CMP Volumes packages

When Enable Override Disk Offering is Yes in CMP, VM creation works like this:

  1. CMP provisions using the compute offering from the VM package (vCPU + RAM only).
  2. CMP passes a separate disk offering in the deployVirtualMachine request for the root volume — the one linked to the customer's selected storage / volume package.
  3. Root disk size, storage type, and tags at deploy time come from that disk offering, not from the compute-only disk metadata on the compute offering.

The compute-only disk section on the compute offering is a CloudStack linkage requirement — it does not replace your volume disk offerings and is not what CMP bills for storage.

Create separate disk offerings under Service Offerings → Disk Offering for root and data volumes (including a custom disk offering if customers should pick disk size). Map those disk offerings to CMP volume packages — see Volumes.

CMP — enable override disk

During Cloud Provider Setup (Wizard Step 2 — Provider Config), set Enable Override Disk Offering to Yes.

Screenshot: CMP — Provider Config with Enable Override Disk Offering set to Yes

When override disk is enabled, CMP passes a disk offering at VM creation time instead of using storage embedded in the compute offering. Root disk pricing comes from volume packages, not the VM package.

Storage bundled in compute offering

Use this model only when you intentionally bundle a fixed root disk size inside the CloudStack compute offering and do not want customers to select root disk size separately in CMP.

When to use this model

Choose storage-bundled compute offerings only if you accept combined compute + storage billing in a single VM package, no VM downgrade by package resize, and no stoppable-service CPU/RAM pause for bundled storage. Most deployments should use compute-only + override disk instead.

CloudStack — create the compute offering

  1. Log in to the CloudStack UI with admin privileges

  2. Navigate to Service Offerings → Compute Offering

  3. Click Add Compute Offering

  4. Set Compute Offering Type to Fixed offering

  5. Enter Name, # of CPU cores, CPU (in MHz), and Memory (in MB)

  6. Leave Compute only Disk Offering disabled

  7. Choose one of the following for root disk:

    • Link an existing disk offering — select a Disk Offering from the list and set Disk Offering Strictness as required. The linked disk offering defines the root disk size bundled with this compute package.
    • Create disk offering inline — click Add Disk Offering, define Disk Size (in GB), Storage type, and Storage tags, then associate it with the compute offering.
  8. Set Public to Yes and select the target Zone(s)

  9. Click Add

Screenshot: CloudStack — Add Compute Offering with disk offering linked (storage bundled)

The root disk size is fixed by the linked disk offering. Customers cannot change root disk size independently during CMP provisioning when this model is in use.

CMP — disable override disk

During Cloud Provider Setup (Wizard Step 2 — Provider Config), set Enable Override Disk Offering to No.

CMP uses the storage defined inside the CloudStack compute offering. VM package pricing should reflect both compute and bundled storage — you cannot split storage charges to volume packages with this model.

One-time decision

Whether storage is bundled in the compute offering is a one-time infrastructure decision. Bundling storage in CloudStack compute offerings prevents separate storage billing, VM downgrade support, and stoppable-service CPU/RAM pause behaviour in CMP. Use compute-only offerings before going to production unless you have a specific reason to bundle storage.

Configure VM packages in CMP

After compute offerings exist in CloudStack, create a matching VM package in CMP for each Cloud Provider + Setup + Zone + Storage Category combination.

CMP path: Settings → Billing Setup → Rate Cards → Default → Packages → Virtual Machine → Add Package

Each field below matches the Create VM Package form.

Package Name

Required. Display name for the package — for example, 2vCore-2GB Memory. Use a label customers will recognize on the Create Instance page.

Cloud Provider

Required. Select the orchestrator type — for example, CloudStack (Nimbo).

Cloud Provider Setup

Required. Select the CloudStack instance this package belongs to — for example, CloudStack-01. The Select Offering dropdown lists compute offerings available on this setup.

Zone

Required. Select the CMP zone where this package is sold. The package appears on the Create Instance page only for this zone.

Packages are unique per Cloud Provider + Setup + Zone + Storage Category. Create a separate package entry for each zone even when the CloudStack offering name is the same.

Compute Category

Optional when compute categories are disabled. Required when compute categories are enabled in CMP. Assign a compute category that matches the templates and offerings you expose in that zone.

Important

Packages without a compute category do not appear on the Create Instance page when compute categories are enabled.

Apply compute categories consistently across related templates, offerings, and packages in the same zone.

Compute Categories are displayed during VM creation to filter the available VM packages. Selecting a category shows only the VM packages associated with that compute category.

The following screenshot illustrates how compute categories are presented during VM creation and how they filter the available VM packages.

Screenshot: CloudStack — Add Compute Offering with disk offering linked (storage bundled)

Select Offering

Required. Select the CloudStack compute offering that CMP uses when provisioning this package.

This field maps the CMP package to the orchestrator. The offering must:

  • Exist in CloudStack for the selected zone

Select OS Family

Required. Choose which operating system families this package supports — for example, All, or a specific family such as Linux or Windows. Customers see this package only when provisioning templates from the selected OS family.

vCore CPU (in Numbers)

Required. Number of vCPU cores for this package. After selecting CloudStack offering this will gets auto populated with read only.

Memory (In MB)

Required. RAM in megabytes — for example, 2048 for 2 GB. After selecting CloudStack offering this will gets auto populated with read only.

Status

Required. Controls package visibility.

StatusBehaviour
ActivePackage appears on the Create Instance page (subject to compute/plan category rules)
InactivePackage is hidden from customers — use while configuring pricing or testing

Tag

Optional. Assign a tag such as Free Trial for filtering or promotional labelling in the customer portal.

Important

This are CMP level tags used for representation. It dose not have any relation with CloudStack host or storage tags.

Screenshot: CMP — CMP level tags

Choose Plan Category

Optional. Select a plan category (for example, General Compute) to group packages in the customer portal.

Important

Packages without a plan category do not appear on the Create Instance page when plan categories are enabled.

When plan categories are enabled in CMP, the customer Create Instance page groups VM packages under the categories you assign here — for example, General Compute or High Memory.

Screenshot: CMP — Create Instance with plan categories enabled in customer portal

Enable Free Trial

Optional. When enabled, customers can provision VMs from this package under a free-trial policy without immediate billing for the trial period. Full guide: Free Trials.

No. of Days for Free Trial

Required when Enable Free Trial is on. Number of calendar days the free trial runs — for example, 7 or 14.

Number of VMs per account

Required when Enable Free Trial is on. Maximum number of free trial VMs a single customer account can create from this package (trial_service_limit) — for example, 2.

Billing cycle and pricing

Required. Set the price for each billing cycle and currency CMP supports.

CMP displays a pricing grid as per the currencies enabled at application level. Enter values for the cycles you offer.

Example (USD and INR rows):

CurrencyHourlyMonthlyQuarterlyYearly
USD1.87671233628.218253533.8
INR1.87671233628.218253533.8
Pricing guidance

Define the monthly price first, then derive hourly using Monthly ÷ (30.5 × 24). See Pricing Formulas for all conversion formulas.

Custom package unit pricing must be equal to or higher than predefined packages for equivalent resources — see Unit Pricing.

End-to-end mapping example

Goal: Sell a 2 vCPU / 2 GB RAM plan in zone SC-SIM-ZONE-1.

CloudStack

  1. Create fixed compute offering 2vCore-2GB Memory — 2 cores, 2048 MB RAM, compute-only, public, zone SC-SIM-ZONE-1

CMP

  1. Open Settings → Billing Setup → Rate Cards → Default → Packages → Virtual Machine
  2. Create package 2vCore-2GB Memory
  3. Set Cloud Provider Setup CloudStack-01, Zone SC-SIM-ZONE-1
  4. Select Offering2vCore-2GB Memory
  5. Set vCore CPU 2, Memory 2048, Select OS Family All
  6. Assign Compute Category and Plan Category if enabled
  7. Enter pricing for USD and INR across billing cycles
  8. Set Status to Active and save

Customers selecting this package on Create Instance provision using the mapped CloudStack offering. Root disk size and storage charges are handled separately through volume packages when override disk is enabled.

Custom unconstrained offering (custom packages)

Predefined VM packages use fixed offerings. Custom packages (where customers enter their own CPU/RAM) require a separate custom unconstrained compute offering in CloudStack. Configure that offering once and map unit pricing in CMP — see Unit Pricing for setting prices and Storage Settings for configuring custom compute and disk offering IDs.

Validation checklist

Before marking a VM package Active, verify:

  • CloudStack compute offering exists with matching CPU, RAM, zone, and public visibility
  • Offering is compute-only and Enable Override Disk Offering is Yes in Cloud Provider Setup
  • Select Offering maps to the correct CloudStack offering
  • vCore CPU and Memory (In MB) match the offering
  • Compute Category and Plan Category are set if those features are enabled
  • Pricing is configured for each supported currency and billing cycle
  • Templates and Volumes packages exist for the same zone