Skip to content

Instance types

The alias table lives here — DescribeInstanceTypes cannot carry it, because the Amazon EC2 model has no field for an alias and an SDK discards elements its model does not declare.

is the only source of truth for the offer; bootstrap/roles/openstack/tasks/resources.yml creates one the compute service flavor per row and carries the aliases as flavor metadata (aws:alias, gcp:alias, azure:alias, alibaba:alias, ibm:alias).

cd-<family>-<vcpu>-<gib>

cd is compute desk. cd-standard-2-8 is 2 vCPU and 8 GiB. Sub-GiB shapes would carry an m suffix and be MiB; none are sold today.

An alias is never a lie about size. An AWS instance-type name appears in the aliases column only where its vCPU and RAM match ours exactly, so existing Terraform that says m5.large gets 2 vCPU and 8 GiB, which is what m5.large means. Where no current-generation, non-burstable AWS name matches a shape, the shape carries no AWS alias at all rather than a near-enough one.

Every modern AWS family starts at 2 vCPU, so there is no honest current-generation, non-burstable AWS name for a 1-vCPU shape. None of these carry an AWS alias.

NamevCPURAMRoot diskAzureOVH
cd-standard-1-212 GiB20 GiBStandard_B1msd2-2
cd-standard-1-414 GiB40 GiBd2-4
cd-memory-1-818 GiB40 GiB
NamevCPURAMRoot diskAWSGCPAzureAlibabaIBMOVH
cd-standard-2-222 GiB40 GiBe2-highcpu-2
cd-standard-2-424 GiB80 GiBc3-4
cd-standard-2-828 GiB80 GiBm5.largee2-standard-2, n2-standard-2Standard_D2s_v5, Standard_B2msecs.g6.largebx2-2x8d2-8
cd-standard-4-16416 GiB120 GiBm5.xlargee2-standard-4, n2-standard-4Standard_D4s_v5ecs.g6.xlargebx2-4x16b3-16
cd-standard-8-32832 GiB160 GiBm5.2xlargee2-standard-8, n2-standard-8Standard_D8s_v5ecs.g6.2xlargebx2-8x32b3-32

cd-standard-2-2 is the default instance type: it is what a launch that names no type receives.

NamevCPURAMRoot diskAWSGCPAzureAlibabaIBMOVH
cd-compute-2-424 GiB80 GiBc5.largec2d-highcpu-2Standard_F2s_v2, Standard_B2secs.c6.largecx2-2x4c3-4
cd-compute-4-848 GiB120 GiBc5.xlargec2d-highcpu-4Standard_F4s_v2ecs.c6.xlargecx2-4x8c3-8
cd-compute-8-16816 GiB160 GiBc5.2xlargec2d-highcpu-8Standard_F8s_v2ecs.c6.2xlargecx2-8x16c3-16
NamevCPURAMRoot diskAWSGCPAzureAlibabaIBMOVH
cd-memory-2-16216 GiB80 GiBr5.largee2-highmem-2Standard_E2s_v5ecs.r6.largemx2-2x16r3-16
cd-memory-4-32432 GiB120 GiBr5.xlargee2-highmem-4Standard_E4s_v5ecs.r6.xlargemx2-4x32r3-32

Verification. AWS aliases are checked against live AWS spec data on every deploy, and an alias that does not match fails it — see What we verify before selling it. GCP, Azure, Alibaba and IBM equivalents are exact-size matches pinned by hand, because no public feed is wired for them yet — they are a convenience for comparison, not a contract.

An alias is accepted anywhere an instance type is:

aws --endpoint-url https://ec2.shelfcs.com --region hel1 \
ec2 run-instances --instance-type m5.large --image-id ami-… --count 1
resource "aws_instance" "app" {
instance_type = "m5.large" # resolves to cd-standard-2-8
ami = data.aws_ami.debian.id
}

The response names our type, not the alias: DescribeInstances returns cd-standard-2-8 for an instance launched as m5.large. Terraform records that in state, so the next plan shows a diff on instance_type unless you either write our name in the configuration or add lifecycle { ignore_changes = [instance_type] }. Writing our name is the better answer.

DescribeInstanceTypes accepts an alias in InstanceType.N — a lookup by alias works — and returns our name in instanceType.

Named so their absence is deliberate:

  • No burst credits. There is no t-family equivalent and no CPU credit balance. A shape’s vCPU count is what it always gets.
  • No GPU, no accelerator of any kind.
  • No local NVMe or instance store. instanceStorageSupported is false on every type. Storage is the root disk plus attached volumes — see Volume types.
  • No bare metal, no dedicated host, no placement group.
RuleValue
Physical12 threads, 62 GB RAM, 1.7 TB HDD
vCPU capacity sold24
CPU overcommitat most 2×
Memory capacity sold51200 MiB (50 GiB)
Memory overcommitnever
Host reserve12 GiB — OS plus the control plane, headroom included

RAM is never overcommitted. If a shape says 8 GiB, 8 GiB of real memory is set aside for it. CPU is overcommitted at most 2×, which is why a busy neighbour can cost you cycles but never memory.

The box is IO-bound before it is CPU-bound. Read Volume types before sizing anything that touches disk.

Four shapes below cd-standard-1-2 — cd-nano-1-128m, cd-nano-1-256m, cd-nano-1-512m, cd-standard-1-1 — are gone. AWS has no non-burstable, current-generation type under 1 vCPU / 2 GiB, and the pricing rule excludes the burstable (t) and Graviton families that do go that small. Every one of those four therefore resolved to the same AWS-equivalent price as cd-standard-1-2: four SKUs charging the same money for strictly less machine.

cd-storage-4-16-1000 — the storage-dense shape an HDD box is actually good at — is also removed, for a different reason: the pricing rule prices the AWS-equivalent instance type, not attached storage, so there is no honest way to price it yet. It comes back when a storage price rule exists.