Skip to content

Compute CLI

Nova · OpenStack CLI · python-openstackclient

Manage instances, flavors, key pairs, server groups, and snapshots from the command line.

Servers

openstack server listList all instances
openstack server show <name|id>Show instance details
openstack server createCreate an instance
openstack server delete <name|id>Delete an instance
openstack server start <name|id>Start a stopped instance
openstack server stop <name|id>Stop a running instance
openstack server reboot <name|id>Reboot an instance
openstack server resize <name|id> <flavor>Resize to a different flavor

Flavors

openstack flavor listList available flavors
openstack flavor show <name|id>Show flavor details (vCPU, RAM, disk)

Key Pairs

openstack keypair listList SSH key pairs
openstack keypair create <name>Generate a new key pair
openstack keypair create --public-key <file> <name>Import an existing public key
openstack keypair delete <name>Delete a key pair

Server Groups

openstack server group listList server groups
openstack server group create --policy <policy> <name>Create with affinity/anti-affinity policy
openstack server group delete <name|id>Delete a server group

Snapshots

openstack server image create --name <snap> <server>Create a snapshot from a running instance
openstack image list --privateList your snapshots
openstack image delete <name|id>Delete a snapshot

Common flags: server create

--image <name|id>Base image (e.g., Ubuntu 22.04, Debian 12)
--flavor <name|id>Hardware profile (vCPU, RAM, disk)
--network <name|id>Network to attach (use public-network for direct internet)
--key-name <name>SSH key pair for login
--security-group <name|id>Security group(s) to apply (repeatable)
--availability-zone <az>Target availability zone
--boot-from-volume <size-gb>Boot from a new volume of the given size
--user-data <file>Cloud-init script for first-boot configuration
--waitBlock until the server reaches ACTIVE status

Common flags: server list

--status <status>Filter by status: ACTIVE, SHUTOFF, ERROR, BUILD
--name <regex>Filter by server name (supports regex)
--flavor <id>Filter by flavor
--all-projectsList across all projects (admin only)
-f jsonOutput as JSON (useful for scripting)
--longShow additional columns (host, power state)

Examples

Create an instance on a public network

# Create an instance on a public network
openstack server create \
  --image "Ubuntu 22.04" \
  --flavor r1.medium \
  --network public-network \
  --key-name my-laptop \
  --security-group ssh-and-web \
  --wait \
  my-web-server

# Output:
# +-----------------------------+--------------------------------------+
# | Field                       | Value                                |
# +-----------------------------+--------------------------------------+
# | id                          | a3f4b8c2-7d91-4e56-b123-9f8e7d6c5b4a |
# | name                        | my-web-server                        |
# | status                      | ACTIVE                               |
# | flavor                      | r1.medium (id: 3)                    |
# | image                       | Ubuntu 22.04 (id: img-abc123)        |
# | addresses                   | public-network=203.0.113.42          |
# +-----------------------------+--------------------------------------+

# SSH into it
ssh [email protected]

Private network + floating IP

# Create an instance on a private network, then add a floating IP
openstack server create \
  --image "Ubuntu 22.04" \
  --flavor r1.small \
  --network my-private-net \
  --key-name my-laptop \
  --wait \
  my-private-server

# Allocate and attach a floating IP
openstack floating ip create public-network
# +---------------------+--------------------------------------+
# | Field               | Value                                |
# +---------------------+--------------------------------------+
# | floating_ip_address | 203.0.113.88                         |
# +---------------------+--------------------------------------+

openstack server add floating ip my-private-server 203.0.113.88

# Verify
openstack server show my-private-server -c addresses
# +----------+---------------------------------------------+
# | Field    | Value                                       |
# +----------+---------------------------------------------+
# | addresses| my-private-net=10.0.0.5, 203.0.113.88       |
# +----------+---------------------------------------------+

Snapshot and restore

# Create a snapshot of a running instance
openstack server image create --name "web-server-backup-$(date +%Y%m%d)" my-web-server
# +------+--------------------------------------+
# | id   | snap-d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d7e |
# +------+--------------------------------------+

# List your snapshots
openstack image list --private
# +--------------------------------------+---------------------------+--------+
# | ID                                   | Name                      | Status |
# +--------------------------------------+---------------------------+--------+
# | snap-d4e5f6a7-8b9c-0d1e-2f3a-4b5c6d | web-server-backup-20260402| active |
# +--------------------------------------+---------------------------+--------+

# Create a new instance from the snapshot
openstack server create \
  --image "web-server-backup-20260402" \
  --flavor r1.medium \
  --network public-network \
  --key-name my-laptop \
  --wait \
  my-web-server-v2

Quake AI tips

Regions

Quake AI has three regions: us-east-1, us-east-2, and us-west-1. Your RC file sets the region; to target a different one, download a new RC file or set OS_REGION_NAME.

Default security group

The default security group allows all egress but no ingress. You must add ingress rules (SSH, HTTP, etc.) before you can connect to your instance.

Flavor naming

Quake AI flavors follow the pattern r1.{size} (e.g., r1.small, r1.medium, r1.large). Run 'openstack flavor list' to see current specs and pricing tiers.

Boot from volume

For production workloads, use --boot-from-volume to create instances backed by persistent block storage. Ephemeral instances lose data if the host fails.

Related