Rancher's OpenStack driver fails to provision nodes with zero-disk flavors because volume-backed boot creation is not supported, resulting in an HTTP 500 error during instance creation.

OpenStack Node Driver Fails with Zero-Disk Flavors (Volume-Backed Boot Required)

Environment

  • Rancher Provisioning v2

  • RKE2/K3s Cluster

  • OpenStack Cloud

  • Native OpenStack node driver (docker-machine-driver-openstack)

Issue Summary

I am encountering a provisioning failure when creating Rancher-managed OpenStack clusters using compute flavors that have a root disk size of 0 GB.

These zero-disk flavors require instances to be launched as volume-backed instances, where a bootable volume is created from the selected image and attached during server creation.

However, the Rancher OpenStack node driver appears to submit a standard image-based instance creation request without providing the required block device mapping configuration. As a result, the OpenStack API rejects the request and machine creation fails.

Steps to Reproduce

  1. Navigate to Cluster Management → Create → OpenStack.

  2. Create a node pool using an OpenStack flavor with root disk = 0 GB.

  3. Select a valid image, network, and other required settings.

  4. Start provisioning an RKE2 or K3s cluster.

  5. Observe the machine creation logs.

Expected Behavior

The OpenStack driver should detect that the selected flavor has no local root disk and automatically provision the instance using volume-backed boot semantics.

Ideally, the driver should:

  • Create a bootable volume from the selected image.

  • Attach the volume during server creation.

  • Submit the request using OpenStack block-device-mapping parameters.

  • Successfully provision the node.

Actual Behavior

Machine creation fails during the OpenStack server creation phase and Rancher reports a CreateError.

Relevant logs:

Creating machine...

(node-openstack-pool) Authenticating...

(node-openstack-pool) Found flavor id using its name
map[ID:<FLAVOR_ID> Name:<FLAVOR_NAME>]

(node-openstack-pool) Found floating IP pool id using its name
map[ID:<POOL_ID> Name:<POOL_NAME>]

(node-openstack-pool) Loading Key Pair <KEYPAIR_NAME>

(node-openstack-pool) Creating OpenStack instance...
map[FlavorId:<FLAVOR_ID> ImageId:<IMAGE_ID>]

(node-openstack-pool) Creating machine...

error creating machine: error in driver during machine creation: Internal Server Error

failureReason: CreateError

Analysis

Based on testing and OpenStack requirements for zero-disk flavors, the issue appears to be related to missing support for volume-backed instance creation in the OpenStack machine driver.

The current implementation seems to pass:

  • Flavor ID

  • Image ID

but does not provide:

  • block_device_mapping_v2

  • boot volume configuration

  • volume-backed boot parameters

Since OpenStack cannot boot a zero-disk flavor directly from an image, Nova rejects the request and returns an HTTP 500 error.

Questions

  1. Is support for zero-disk / volume-backed OpenStack flavors currently available in Rancher Provisioning v2?

  2. Has anyone successfully provisioned RKE2/K3s clusters using volume-backed instances on OpenStack?

  3. Is this a known limitation of docker-machine-driver-openstack, or would this be considered a bug/enhancement request?

Any guidance or confirmation from the Rancher/OpenStack maintainers would be appreciated.