Skip to content

Migrate from Linode compute instances to Quake AI compute

Migration

Coming from another cloud?

▸Linode·s (Compute Instances), Block Storage Volumes

Linodes (Compute Instances)high

  • Provisioned via the Linode API v4 (/v4/linode/instances) instead of OpenStack Nova /v2.1/servers; auth is a Personal Access Token rather than a Keystone token.
  • Plan selection is fixed (Shared, Dedicated, High Memory, Premium, GPU, Accelerated) with predefined vCPU/RAM/storage; OpenStack flavors can be cloud-defined.
  • Billing is hourly with a monthly cap per plan; powered-off Linodes continue to bill until deleted, unlike pause/suspend semantics common in OpenStack stop-billing setups.
  • Distribution images and StackScripts are first-class; OpenStack uses Glance images and arbitrary userdata.
Linode docs ↗

Block Storage Volumeshigh

  • Managed via /v4/volumes on the Linode API; OpenStack uses Cinder /v3/{project_id}/volumes.
  • Volumes are region-scoped and cannot move between data centers without detach + recreate; OpenStack Cinder volumes are likewise AZ-scoped but the explicit no-cross-region migration is documented at Akamai.
  • Size increases only (no shrink); same restriction exists on OpenStack but Linode enforces it as a hard API rule.
  • Throughput and IOPS limits are plan-implicit and not separately tunable per volume.
Linode docs ↗

Migrate from Linode compute instances to Quake AI compute

This guide covers migrating compute workloads from Linode (now branded Akamai Cloud Computing) to Quake AI (OpenStack Nova). Linode's image and snapshot tools are designed for intra-Linode portability and do not export to a format Glance can import directly. The reliable path is rebuild and rsync. Linode users typically provision from public images with configuration management (cloud-init, Ansible, shell scripts), which makes rebuild the natural fit.

Service mapping#

Linode to Quake AI

Linode serviceQuake AI equivalentKey difference
typesFlavorsLinode exposes flavors as account-level "types" returned by the List types API, which the docs say are used when creating or resizing... see details
Custom ImagesImagesLinode treats custom images as account images that you either capture from an existing Linode disk or upload yourself, and the service... see details
Linodes (Compute Instances)InstancesProvisioned via the Linode API v4 (/v4/linode/instances) instead of OpenStack Nova /v2.1/servers; auth is a Personal Access Token rather... see details
Profile SSH keysKey PairsLinode manages SSH keys under the Profile resource, with `GET /v4/profile/sshkeys`, `POST /v4/profile/sshkeys`, `GET... see details
Placement GroupsServer GroupsOpenStack Nova server groups expose scheduling policies like affinity and anti-affinity at the API level, but Linode Placement Groups only... see details
Block Storage volumesSnapshotsLinode Block Storage is modeled as independent Volumes that you attach and mount to a Linode, rather than an OpenStack Cinder... see details
Images / BackupsSnapshotsLinode exposes instance-level snapshots through the Images and Backups APIs rather than as a Nova-style instance_snapshot resource. The... see details

Prerequisites#

  • A Quake AI account with application credentials
  • The OpenStack CLI installed and configured
  • SSH access to your Linode instances
  • An SSH key pair imported to Quake AI (openstack keypair create --public-key)

Image portability#

Linode supports custom images (private images), generated from a disk on an existing Linode and limited to Linode-region targets. Images do not export to a format that imports cleanly into OpenStack Glance, and Linode's intra-data-center migrate workflow is also a Linode-to-Linode tool.

Recommendation: do not attempt image export. Linode servers are typically provisioned from public Akamai images with config management; rebuild is the right approach.

Plan mapping#

Linode publishes four plan families: Shared CPU (shared vCPU, general purpose), Dedicated CPU (dedicated vCPU, CPU-bound workloads), High Memory (8 GiB RAM per vCPU and up), and Premium (newer-generation hardware, dedicated vCPU). The current sizes per family are documented at How to choose a Compute Instance plan; confirm the exact vCPU and RAM of your Linode in the Cloud Manager before mapping, since plan SKUs are added and renamed over time.

The Quake AI flavor families map onto the Linode families as follows:

Linode plan familyQuake AI flavor familyRAM-per-vCPU ratioNotes
Shared CPU (Nanode, Linode 2 GB, etc.)s1a1-2 GiBSmallest shared sizes; cheapest entry point on both.
Shared CPU (larger general-purpose)m2a4 GiBGeneral-purpose web/app workloads.
Dedicated CPUm2a or c2a4 GiB or 2 GiBc2a is the compute-optimized choice (2 GiB RAM per vCPU); use m2a when you also need more RAM.
High Memoryr2a8 GiBDirect fit. Cinder volumes provide additional disk for in-memory workload spillover.
Premiumm2a (or c2a for CPU-bound)4 GiB or 2 GiBPick the closest ratio match for your workload.
GPU (RTX/A100)No equivalent todayn/aQuake AI does not currently expose GPU flavors. Plan a rebuild on non-GPU hardware or use an external GPU provider.

Pick the closest Quake AI flavor by vCPU count and RAM-per-vCPU ratio. See Flavors for the full list.

Migration approach#

If your Linode runs Docker containers, migrate the container images and redeploy.

  1. Push images to a portable registry:
bash
docker push registry.example.com/MY_APP:latest
  1. Provision a Nova instance on Quake AI:
bash
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
  1. Install Docker and deploy:
bash
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:latest

Option 2: Rebuild and rsync (non-containerized)#

  1. Provision a Nova instance with the same base OS:
bash
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
  1. Assign a Floating IP:
bash
openstack floating ip create PublicStatic
openstack server add floating ip MY_INSTANCE_NAME FLOATING_IP
  1. Install your application stack. Replay Ansible playbooks, cloud-init configs, or provisioning scripts.

  2. Transfer application data:

bash
rsync -avz --progress -e "ssh -i ~/.ssh/MY_KEY" \
  root@LINODE_IP:/path/to/app/data \
  ubuntu@FLOATING_IP:/path/to/app/data
  1. Migrate databases:
bash
pg_dump -h LINODE_IP -U MY_USER MY_DATABASE | \
  psql -h FLOATING_IP -U MY_USER MY_DATABASE

Key pair and security setup#

Import your SSH key#

bash
openstack keypair create --public-key ~/.ssh/id_ed25519.pub my-key

Translate Linode Cloud Firewalls to security groups#

Linode Cloud Firewalls attach to a Linode or NodeBalancer and define ingress and egress rules. Neutron security groups apply per instance port and are allow-only (no explicit DROP rules). Translate your inbound rules:

bash
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/0

Linode Cloud Firewall outbound rules: Neutron security groups have egress rules too; by default a fresh security group has an allow-all egress rule. Restrict egress explicitly if your Cloud Firewall did.

Block Storage Volume migration#

If your Linodes 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:

bash
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@LINODE_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#

TopicDetail
Billing for powered-off LinodesLinode bills hourly while a Linode exists, regardless of power state; only deletion stops billing. Plan the cutover window so you delete the source Linode promptly after validating the Quake AI instance.
Linode-only image migrateLinode's data-center migrate tool is Linode-to-Linode and cannot target OpenStack.
Managed servicesLinode Managed Databases (PostgreSQL, MySQL) and Linode Backups have no managed equivalent on Quake AI. Run Postgres/MySQL on a Nova instance with a Cinder data volume; replace Backups with openstack server image create and Cinder volume snapshots.
GPU plansLinode GPU plans (RTX 4000 Ada, A100) have no Quake AI equivalent.
Linode CLIKeep the Linode CLI installed during the cutover to enumerate source resources; see also linode-cli getting started.

See also#

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

Was this page helpful?