Migrate from Vultr to Quake AI compute
Coming from another cloud?
▸Vultr·Cloud Compute / Bare Metal Instances, Block Storage
Cloud Compute / Bare Metal Instances
- Provisioned via the Vultr API v2 (/v2/instances and /v2/bare-metals) instead of OpenStack Nova /v2.1/servers; auth is a Personal Access Token rather than a Keystone token.
- Plan selection is fixed (Regular Performance, High Performance, High Frequency, CPU Optimized, Memory Optimized, Bare Metal) with predefined vCPU/RAM/storage; OpenStack flavors can be cloud-defined.
- Billing is hourly with a monthly cap per plan; powered-off Vultr instances continue to bill until destroyed, unlike pause/suspend semantics common in OpenStack stop-billing setups.
- Marketplace one-click apps and ISO library are first-class; OpenStack uses Glance images and arbitrary userdata.
Block Storage
- Managed via /v2/blocks on the Vultr API; OpenStack uses Cinder /v3/{project_id}/volumes.
- Block Storage offers two performance tiers (HDD and NVMe) selected at create time; OpenStack Cinder uses volume types defined by the cloud operator.
- Volumes are region-scoped and attach to a single instance at a time; the OpenStack multi-attach pattern is not exposed.
- Size increases only (no shrink); same restriction exists on OpenStack but Vultr enforces it as a hard API rule.
Migrate from Vultr to Quake AI compute
This guide covers migrating compute workloads from Vultr to Quake AI (OpenStack Nova). Vultr's snapshot tools are designed for intra-Vultr portability and do not export to a format Glance can import directly. The reliable path is rebuild and rsync. Vultr users typically provision from public images or Marketplace one-click apps with configuration management (cloud-init, Ansible, shell scripts), which makes rebuild the natural fit.
Service mapping#
Vultr to Quake AI
| Vultr service | Quake AI equivalent | Key difference |
|---|---|---|
| Plans | Flavors | Vultr treats instance sizes as predefined Plans, defined as a particular configuration of vCPU, RAM, SSD, and bandwidth, rather than... see details |
| Custom ISO | Images | Vultr names the feature "Custom ISO" and describes it as attaching and booting custom ISO images on a VX1 Cloud Compute instance, rather... see details |
| Cloud Compute / Bare Metal Instances | Instances | Provisioned via the Vultr API v2 (/v2/instances and /v2/bare-metals) instead of OpenStack Nova /v2.1/servers; auth is a Personal Access... see details |
| SSH Keys | Key Pairs | Vultr documents SSH Keys as an account-level resource under Account > SSH Keys, with dedicated create and list endpoints at... see details |
| Tags | Server Groups | Vultr documents instance tagging on the compute instance create and update APIs, not an OpenStack-style scheduler resource. The canonical... see details |
| Snapshots | Snapshots | Vultr’s snapshots are documented as instance snapshots that capture the full state of compute instances, rather than a separate OpenStack... see details |
| Snapshots / Auto Backups | Snapshots | Vultr exposes this as two separate features, "Snapshots" and "Auto Backups", rather than one Nova instance-snapshot object model. The... see details |
Prerequisites#
- A Quake AI account with application credentials
- The OpenStack CLI installed and configured
- SSH access to your Vultr instances
- An SSH key pair imported to Quake AI (
openstack keypair create --public-key)
Image portability#
Vultr supports snapshots generated from a running instance and limited to Vultr-region targets. Snapshots do not export to a format that imports cleanly into OpenStack Glance.
Recommendation: do not attempt image export. Vultr instances are typically provisioned from public Vultr images or Marketplace one-click apps with config management; rebuild is the right approach.
Plan mapping#
Vultr publishes several plan families: Regular Performance (shared vCPU, general purpose), High Performance (newer-generation shared CPU with NVMe), High Frequency (3+ GHz dedicated cores), CPU Optimized (dedicated vCPU, CPU-bound workloads), Memory Optimized (8 GiB RAM per vCPU and up), and Bare Metal. The current sizes per family are documented at Cloud Compute and Bare Metal; confirm the exact vCPU and RAM of your Vultr instance in the Customer Portal before mapping, since plan SKUs are added and renamed over time.
The Quake AI flavor families map onto the Vultr families as follows:
| Vultr plan family | Quake AI flavor family | RAM-per-vCPU ratio | Notes |
|---|---|---|---|
| Regular Performance (shared, small) | s1a | 1-2 GiB | Smallest shared sizes; cheapest entry point on both. |
| Regular Performance (larger general-purpose) | m2a | 4 GiB | General-purpose web/app workloads. |
| High Performance | m2a | 4 GiB | NVMe storage on both; pick m2a for the closest ratio. |
| High Frequency | c2a | 2 GiB | High clock speeds on both; c2a is the compute-optimized choice. |
| CPU Optimized | c2a | 2 GiB | Direct fit. |
| Memory Optimized | r2a | 8 GiB | Direct fit. Cinder volumes provide additional disk for in-memory workload spillover. |
| Bare Metal | No managed equivalent | n/a | Quake AI does not currently expose dedicated bare-metal flavors. Plan a rebuild on the closest virtualized flavor, or consult Quake AI support for capacity options. |
Pick the closest Quake AI flavor by vCPU count and RAM-per-vCPU ratio. See Flavors for the full list.
Migration approach#
Option 1: Containerized workloads (recommended)#
If your Vultr instance runs Docker containers, migrate the container images and redeploy.
- Push images to a portable registry:
docker push registry.example.com/MY_APP:latest- Provision a Nova instance on Quake AI:
openstack server create \
--image "Ubuntu-22.04" \
--flavor m2a.xlarge \
--network MY_NETWORK \
--key-name MY_KEY \
--security-group MY_SECURITY_GROUP \
MY_INSTANCE_NAME- Install Docker and deploy:
ssh ubuntu@FLOATING_IP
sudo apt update && sudo apt install -y docker.io
sudo docker pull registry.example.com/MY_APP:latest
sudo docker run -d -p 80:8080 registry.example.com/MY_APP:latestOption 2: Rebuild and rsync (non-containerized)#
- Provision a Nova instance with the same base OS:
openstack server create \
--image "Ubuntu-22.04" \
--flavor m2a.xlarge \
--network MY_NETWORK \
--key-name MY_KEY \
--security-group MY_SECURITY_GROUP \
MY_INSTANCE_NAME- Assign a Floating IP:
openstack floating ip create PublicStatic
openstack server add floating ip MY_INSTANCE_NAME FLOATING_IP-
Install your application stack. Replay Ansible playbooks, cloud-init configs, or provisioning scripts.
-
Transfer application data:
rsync -avz --progress -e "ssh -i ~/.ssh/MY_KEY" \
root@VULTR_IP:/path/to/app/data \
ubuntu@FLOATING_IP:/path/to/app/data- Migrate databases:
pg_dump -h VULTR_IP -U MY_USER MY_DATABASE | \
psql -h FLOATING_IP -U MY_USER MY_DATABASEKey pair and security setup#
Import your SSH key#
openstack keypair create --public-key ~/.ssh/id_ed25519.pub my-keyTranslate Vultr Firewall Groups to security groups#
Vultr Firewall Groups attach to one or more instances and define inbound rules; outbound traffic is allowed by default with no rule surface. Neutron security groups apply per instance port and are allow-only (no explicit DROP rules), with both ingress and egress rule support. Translate your inbound rules:
openstack security group create web-tier
openstack security group rule create web-tier \
--protocol tcp --dst-port 22 --remote-ip 0.0.0.0/0
openstack security group rule create web-tier \
--protocol tcp --dst-port 80 --remote-ip 0.0.0.0/0
openstack security group rule create web-tier \
--protocol tcp --dst-port 443 --remote-ip 0.0.0.0/0By default a fresh Neutron security group has an allow-all egress rule. Restrict egress explicitly if you want stricter control than Vultr's default-allow outbound behavior.
Block Storage migration#
If your Vultr instances have attached Block Storage volumes, provision an equally sized Cinder volume on Quake AI, attach it to the new instance, format and mount it, then rsync the data:
openstack volume create --size 100 my-data-vol
openstack server add volume MY_INSTANCE_NAME my-data-vol
# on the instance:
sudo mkfs.ext4 /dev/vdb
sudo mkdir -p /mnt/data && sudo mount /dev/vdb /mnt/data
rsync -avz --progress -e ssh root@VULTR_IP:/mnt/data/ /mnt/data/Validation checklist#
After migrating each workload, verify:
- Application responds correctly on the Quake AI instance
- All expected ports are accessible through the security group
- Data integrity: compare file checksums or row counts between source and destination
- Database connectivity from the application to any migrated databases
- DNS records updated to point to the new Quake AI Floating IP
- Monitoring in place (self-managed Prometheus + Grafana)
- cloud-init or configuration management runs cleanly on the new instance
- SSL/TLS certificates installed and renewed
Provider-specific gotchas#
| Topic | Detail |
|---|---|
| Billing for powered-off instances | Vultr bills hourly while an instance exists, regardless of power state; only destruction stops billing. Plan the cutover window so you destroy the source instance promptly after validating the Quake AI instance. |
| Vultr-only snapshot migrate | Vultr's snapshot tooling is Vultr-to-Vultr and cannot target OpenStack. |
| Managed services | Vultr Managed Databases (PostgreSQL, MySQL, Redis, Kafka) and Vultr Backups have no managed equivalent on Quake AI. Run Postgres/MySQL/Redis on a Nova instance with a Cinder data volume; replace Backups with openstack server image create and Cinder volume snapshots. |
| Bare Metal | Vultr Bare Metal plans have no managed Quake AI equivalent today. |
| vultr-cli | Keep vultr-cli installed during the cutover to enumerate source resources. |
See also#
- Migrating from Vultr to Quake AI: full cross-service migration hub
- Coming from Vultr: concept translation reference
- Create an instance: full instance provisioning workflow
- Compute migration guides: all provider guides
Usage Guidelines
The sample code, software libraries, command line tools, proofs of concept, templates, and other related technology on this page (including any of the foregoing that is provided by Quake AI personnel) is provided to you as Quake AI Content under the Quake AI Customer Agreement, or the relevant written agreement between you and Quake AI (whichever applies). Do not use this Quake AI Content in your production accounts, or on production or other critical data. You are responsible for testing, securing, and optimizing the Quake AI Content (such as sample code) as appropriate for production grade use based on your specific quality control practices and standards. Deploying Quake AI Content may incur Quake AI charges for creating or using Quake AI chargeable resources, such as running Compute instances or storing data in Object Storage. Your use is also subject to the Acceptable Use Policy.
Comparisons to third-party providers in this material reflect publicly documented behavior as of the validation date below. Pricing, quotas, service limits, and feature availability change frequently on every cloud. Verify provider-specific claims against the provider's own current documentation before relying on them for a procurement, architecture, or migration decision.
For the full policy, see Usage Guidelines.
Quick answers
- Why does `openstack image save` write a 0-byte file for my boot-from-volume instance?CLI
- Why does `openstack server create` fail with "Only volume-backed servers are allowed for flavors with zero disk"?CLIAPITerraform
- Why does my project still have a 10 GiB Cinder volume after I deleted my instance?CLIAPI
See Also
Compute migration guides
Shares: Flavors, Images
Migrate from Azure Virtual Machines to Quake AI Compute
Shares: Flavors, Images
Migrate from DigitalOcean Droplets to Quake AI Compute
Shares: Flavors, Images
Migrate from AWS EC2 to Quake AI compute
Shares: Flavors, Images
Migrate from GCP Compute Engine to Quake AI compute
Shares: Flavors, Images