-
Notifications
You must be signed in to change notification settings - Fork 1
deploystack Client
Welcome to the DeployStack wiki. This page documents all available CLI commands, their arguments, and usage examples.
- deploy
- generate-config
- launch
- image upload
- image remove
- volume create
- volume attach
- volume detach
- volume remove
- volume reset
Starts the full OpenStack deployment on the current node.
Syntax:
deploystack deploy [options]| Argument | Default | Description |
|---|---|---|
--allinone |
— | Generate an automatic configuration on the system and automatically start the deployment. |
--config-file <config-file-path> |
— | Start deployment from an existing configuration file. |
--install-cinder {yes,no} |
yes |
Install the Cinder (Block Storage) service if set to yes. |
--install-horizon {yes,no} |
yes |
Install Horizon (Dashboard) if set to yes. |
--lvm-image-size-in-gb <size-in-gigabytes> |
5 |
LVM image size for Cinder. |
--neutron-driver {ovs,ovn} |
ovs |
Network driver to use for Neutron. |
--os-release <openstack-release> |
caracal |
The OpenStack release to install for deployment. |
--generate-only |
— | Generate the configuration automatically without starting the deployment. |
Generate a pre-compiled configuration file without deploying:
deploystack deploy --allinone --generate-onlyThen start the deployment using the generated file:
deploystack deploy --config-file openstack-config-xxxx.yamlGenerates an empty template configuration file that must be filled in manually before deployment.
Syntax:
deploystack generate-config FILE_PATHdeploystack generate-config ~/openstack-config.yamlNote:
deploy --allinone --generate-onlycreates a pre-compiled configuration file for the current system, whilegenerate-configcreates an empty file that you must compile manually.
Quickly launches an OpenStack instance using the default image, flavor, and network.
Syntax:
deploystack launch [options]| Argument | Default | Description |
|---|---|---|
--name <name> |
(auto-generated) | Name of the instance. |
--image <image> |
cirros |
Image to use. |
--flavor <flavor> |
m1.tiny |
Flavor to use. |
--keypair <keypair> |
(auto-generated) | SSH key to log into the instance. Leave empty to let the utility generate a new keypair automatically. |
--password <password> |
— | Password for the administrator user (for compatible Linux/Windows images only). |
--network <network> |
internal |
The main network that will be connected to the instance |
--timeout <seconds> |
100 |
Maximum time to wait for the instance to become active. (Useful for large images) |
deploystack launch --name test-instance --password MySecret123Upload a new Linux cloud image from the web to OpenStack distribution.
Syntax:
deploystack image upload [options]| Argument | Default | Description |
|---|---|---|
--os <os> |
— | Operating system of the image (ubuntu, centos, debian, etc.) |
--image-name <name> |
(auto-generated) | Name to assign to the uploaded image. |
--version <version> |
— | OS version of the image. |
--visibility {public,private,shared} |
public |
Visibility of the image in Glance. |
--output-dir <path> |
/tmp |
Directory where the image will be temporarily downloaded. |
--keep |
no |
Keep the downloaded image file after upload. |
--arch <arch> |
amd64 |
Architecture of the image. |
--timeout <seconds> |
300 |
Maximum time to wait for the image to become active. |
Upload an Ubuntu Noble image with default settings:
deploystack image upload --os ubuntu --version nobleUpload with a custom name and shared visibility:
deploystack image upload --os ubuntu --version noble --image-name "Ubuntu Noble" --visibility sharedNote: If
--image-nameis not provided, DeployStack generates a name based on OS, version, and architecture.
Removes an image from the current OpenStack deployment.
Syntax:
deploystack image remove --image <image> [--timeout <timeout>]| Argument | Default | Description |
|---|---|---|
--image <image> |
— | Name or ID of the image to remove from Glance. |
--timeout <seconds> |
300 |
Maximum time to wait to check if the image has been deleted in OpenStack (default: 300s) |
Remove an image named ubuntu-jammy-amd64:
deploystack image remove ubuntu-jammy-amd64Warning: This operation permanently deletes the image from OpenStack. Ensure no running instances rely on this image.
Create a new volume in the OpenStack distribution
Syntax:
deploystack volume create --name <name> --size <size-in-gb> [--is-bootable] [--image <image>]| Argument | Default | Description |
|---|---|---|
--image <image> |
(auto-generated) | The name of the volume to create |
--size <size-in-gb> |
5 |
The size of the volume in GB (default: 5 GB) |
--is-bootable |
- | Mark the volume as bootable. Use this flag if the volume should be usable as a boot disk |
--image |
- | Optional Glance image ID or name to create the volume from |
--image |
- | Optional Cinder Volume Backup ID or name to create the volume from |
--image |
- | Optional Cinder Volume Snapshot ID or name to create the volume from |
Create an empty volume:
deploystack volume create --name volume-test --size 5Attach the volume to a specific instance
Syntax:
deploystack volume attach --volume <name> --instance <instance>| Argument | Default | Description |
|---|---|---|
--volume <volume> |
- | ID or name of the volume to attach |
--instance <instance> |
- | ID or name of the instance to attach the volume to |
Attach a specific volume to an instance:
deploystack volume attach --volume volume-test --instance windows-server-2016Detaches a volume from an instance, bypassing the common OpenStack bug where volumes get stuck in attached or detaching state and cannot be removed through Horizon or the standard CLI.
Syntax:
deploystack volume detach --volume <volume> --instance <instance>| Argument | Default | Description |
|---|---|---|
--volume <volume> |
— | ID or name of the volume to detach |
--instance <instance> |
— | ID or name of the instance to detach the volume from |
Unlike the standard openstack server remove volume command, deploystack volume detach performs three steps to ensure the volume is fully released:
- API detach — sends the standard detach request to Nova
-
State reset — resets the volume status to
availableand the attach status todetachedin Cinder, resolving stuck states - Database cleanup — marks the volume attachment as deleted in the Nova database, removing any stale reference that would prevent future operations
deploystack volume detach --volume volume-test --instance windows-server-2016
⚠️ Note: This command directly modifies the Nova database to resolve stuck volume attachments. It is intended as a recovery tool when the standard detach operation fails or leaves the volume in an inconsistent state. Always verify the instance is not actively using the volume before running this command.
Removes a volume from the current OpenStack deployment.
Syntax:
deploystack volume remove --volume <volume> [--timeout <timeout>]| Argument | Default | Description |
|---|---|---|
--volume <volume> |
— | Volume Name or ID |
--timeout <seconds> |
300 |
Maximum time to wait to check if the volume has been deleted in OpenStack (default: 300s) |
Remove a volume named test-volume:
deploystack volume remove --volume test-volume
⚠️ Warning: This operation permanently deletes the volume from OpenStack. Ensure no running instances are attached to this volume before proceeding.
Reset the state of a volume that has become inconsistent
Syntax:
deploystack volume reset --volume <volume> [--force]| Argument | Default | Description |
|---|---|---|
--volume <volume> |
— | Volume Name or ID |
--force |
— | Skip safety checks and force the volume status reset |
Reset a volume state named test-volume:
deploystack volume reset --volume test-volume
⚠️ WARNING: Use--forceonly in special recovery scenarios, for example when an instance has already been deleted but the volume still has ghost attachments and remains marked asin-use.Never use
--forceif the volume is actively attached to a running instance, as this may cause data corruption or inconsistent states.
For issues or contributions, visit the project repository.