Skip to content

Migrate from AWS EC2 to Quake AI compute

Migration · Updated Jun 2026

Coming from another cloud?

▸AWS·EC2 Instances, EBS, Amazon Machine Images (AMIs)

EC2 Instanceshigh

  • Uses EC2 RunInstances API instead of Nova servers.create.
  • Requires predefined instance type selection.
  • Supports per-second On-Demand billing and Spot/Reserved options.
  • Includes hibernation state not standard in OpenStack.
AWS docs ↗

Migrate from AWS EC2 to Quake AI compute

You use this guide to move virtual machine workloads from AWS EC2 to Quake AI (OpenStack Nova). For most workloads, you rebuild and rsync: you provision a fresh Nova instance, install your application stack, and transfer data. You can export custom AMIs, but the pipeline adds complexity and often takes longer than rebuild and rsync.

Service mapping#

AWS to Quake AI

AWS serviceQuake AI equivalentKey difference
Amazon EBS Volume Copies (Clones)ClonesDirect same-AZ copy only; requires source encrypted, size >= source; background initialization with instant low-latency access. One-time... see details
Amazon EC2ComputeNo notable divergence
Instance TypesFlavorsFixed predefined configurations only; no custom flavor creation. Extensive families for GPU/HPC/ARM etc. InstanceType as string param in... see details
Amazon Machine Images (AMIs)ImagesManaged via EC2 APIs, not Glance. Region-specific with cross-region copy. Marketplace AMIs may charge hourly fees. Includes block device... see details
EC2 InstancesInstancesUses EC2 RunInstances API instead of Nova servers.create. Requires predefined instance type selection. Supports per-second On-Demand... see details
EC2 Key PairsKey PairsPublic key auto-injected to authorized_keys at boot. Up to 5000 per region; AWS stores public key. Supports import of external keys... see details
Placement GroupsServer GroupsPolicies: cluster/partition/spread vs affinity/anti-affinity. AZ-scoped, no instance moves/merges. Specified at launch via... see details
Amazon Machine Images (AMIs)SnapshotsNo notable divergence
EBS SnapshotsSnapshotsPer-EBS volume, incremental in S3; not full instance image. Via EC2 CreateSnapshot API, not Nova/Cinder. Async pending state, volume usable... see details

Prerequisites#

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

Image portability#

AWS supports exporting custom AMIs to S3 in VMDK, VHD, or RAW format using the aws ec2 export-image command. Downloaded images require conversion to QCOW2 before uploading to Glance.

bash
aws ec2 export-image \
  --image-id MY_AMI_ID \
  --disk-image-format RAW \
  --s3-export-location S3Bucket=MY_EXPORT_BUCKET,S3Prefix=exports/

# Download from S3, convert to QCOW2
qemu-img convert -f raw -O qcow2 MY_EXPORTED_RAW MY_OUTPUT_QCOW2

# Upload to Glance
openstack image create MY_IMAGE_NAME \
  --disk-format qcow2 --container-format bare \
  --file MY_OUTPUT_QCOW2

When to use image export: Only for custom AMIs with significant baked-in software that would take longer to rebuild than to export, convert, and upload. The pipeline adds 30-60 minutes per image depending on size. For most workloads, rebuild and rsync is faster.

Flavor mapping#

AWS instance families map to Quake AI flavor families by their RAM-to-vCPU ratio. M-series (general purpose, 4:1) maps to m2a, C-series (compute optimized, 2:1) maps to c2a, R-series (memory optimized, 8:1) maps to r2a, and T-series (burstable) maps to s1a for light workloads.

AWS Instance TypevCPUsRAM (GiB)Quake AI FlavorvCPUsRAM (GiB)Notes
t3.micro21s1a.micro11Burstable → shared; fewer vCPUs on Quake AI
t3.medium24s1a.medium24Both 2 vCPU / 4 GiB
t3.large28m2a.large28Exact ratio match
m6i.large28m2a.large28Exact ratio match
m6i.xlarge416m2a.xlarge416Exact ratio match
m6i.2xlarge832m2a.2xlarge832Exact ratio match
m6i.4xlarge1664m2a.4xlarge1664Exact ratio match
m6i.8xlarge32128m2a.8xlarge32128Exact ratio match
m6i.16xlarge64256m2a.16xlarge64256Exact ratio match
c6i.large24c2a.large24Exact ratio match
c6i.xlarge48c2a.xlarge48Exact ratio match
c6i.2xlarge816c2a.2xlarge816Exact ratio match
c6i.4xlarge1632c2a.4xlarge1632Exact ratio match
r6i.large216r2a.large216Exact ratio match
r6i.xlarge432r2a.xlarge432Exact ratio match
r6i.2xlarge864r2a.2xlarge864Exact ratio match
r6i.4xlarge16128r2a.4xlarge16128Exact ratio match

T-series instances at high sustained utilization should move to m2a rather than s1a, since T-series bursting masks continuous CPU demand.

The same vCPU-to-RAM ratios apply to newer instance generations (m7i, c7i, r7i). Choose the Quake AI flavor based on the ratio, not the generation number.

Migration approach#

If your EC2 workloads run in Docker or on ECS/EKS, migrate the container images and redeploy.

  1. Push images from ECR to a portable registry (Docker Hub, GitHub Container Registry, or self-hosted):
bash
docker pull MY_ACCOUNT_ID.dkr.ecr.MY_AWS_REGION.amazonaws.com/MY_APP:latest
docker tag MY_ACCOUNT_ID.dkr.ecr.MY_AWS_REGION.amazonaws.com/MY_APP:latest \
  MY_REGISTRY/MY_APP:latest
docker push MY_REGISTRY/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 MY_REGISTRY/MY_APP:latest
sudo docker run -d -p 80:8080 MY_REGISTRY/MY_APP:latest

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

For traditional application stacks, provision a fresh instance and transfer data.

  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 for SSH access:
bash
openstack floating ip create PublicStatic
openstack server add floating ip MY_INSTANCE_NAME FLOATING_IP
  1. Install your application stack on the Quake AI instance. Reuse existing cloud-init configs, Ansible playbooks, or shell scripts.

  2. Transfer application data from the EC2 instance:

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

# MySQL
mysqldump -h EC2_PUBLIC_IP -u MY_USER -p MY_DATABASE | \
  mysql -h FLOATING_IP -u MY_USER -p MY_DATABASE

Key pair and security setup#

Import your SSH key#

If you already have an SSH key pair used with EC2, import the public key to Quake AI:

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

Or generate a new key pair:

bash
openstack keypair create MY_KEY > MY_KEY.pem
chmod 600 MY_KEY.pem

Recreate security groups#

EC2 security groups map closely to Neutron security groups. Both default to deny-inbound, allow-outbound. Translate your rules with the same protocol, port, and CIDR values:

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

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 to replace CloudWatch)
  • cloud-init or configuration management runs cleanly on the new instance
  • SSL/TLS certificates installed and renewed with Let's Encrypt, Certbot, or your chosen certificate service

Provider-specific gotchas#

TopicDetail
Egress costsAWS bills egress per-GB after a small free allowance. AWS offers a free egress waiver for migrations, but you must request it from AWS Support; it is not automatic. See AWS pricing.
Reserved InstancesCheck for active RI or Savings Plan commitments before decommissioning. Break fees may apply.
Marketplace AMIsCannot be exported. Rebuild from scratch with equivalent open-source software.
IAM credentialsAWS IAM has no Quake AI equivalent. Switch to OpenStack application credentials.
Instance metadataBoth use the 169.254.169.254 metadata endpoint. AWS-specific keys (instance profile, IAM role) do not exist on OpenStack. cloud-init is compatible, but remove EC2-specific datasource references. AWS IMDSv2 uses session-oriented PUT+GET requests; OpenStack uses the older GET-only (IMDSv1-style) interface. Applications that enforce IMDSv2 need changes on Quake AI.
EBS volumesNo direct volume export. Attach, mount, and rsync data to a Cinder volume on Quake AI.
Elastic IPsAWS Elastic IPs cannot be transferred. Update DNS to point to new Quake AI floating IPs during cutover. Use low TTLs during the transition.
Secondary ENIsMultiple ENIs for network isolation or failover have no direct equivalent. Replicate the topology using Neutron ports and multiple security groups.
Windows licensingBYOL from Software Assurance is required. Cloud-only Windows licenses are provider-locked and cannot transfer.

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.

Last validated: 22.06.2026

Quick answers

Was this page helpful?