Instance types
Objective
Section titled “Objective”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).
Naming
Section titled “Naming”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.
The shapes
Section titled “The shapes”Small — one vCPU
Section titled “Small — one vCPU”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.
| Name | vCPU | RAM | Root disk | Azure | OVH |
|---|---|---|---|---|---|
cd-standard-1-2 | 1 | 2 GiB | 20 GiB | Standard_B1ms | d2-2 |
cd-standard-1-4 | 1 | 4 GiB | 40 GiB | d2-4 | |
cd-memory-1-8 | 1 | 8 GiB | 40 GiB |
General purpose — 1:2 and 1:4
Section titled “General purpose — 1:2 and 1:4”| Name | vCPU | RAM | Root disk | AWS | GCP | Azure | Alibaba | IBM | OVH |
|---|---|---|---|---|---|---|---|---|---|
cd-standard-2-2 | 2 | 2 GiB | 40 GiB | e2-highcpu-2 | |||||
cd-standard-2-4 | 2 | 4 GiB | 80 GiB | c3-4 | |||||
cd-standard-2-8 | 2 | 8 GiB | 80 GiB | m5.large | e2-standard-2, n2-standard-2 | Standard_D2s_v5, Standard_B2ms | ecs.g6.large | bx2-2x8 | d2-8 |
cd-standard-4-16 | 4 | 16 GiB | 120 GiB | m5.xlarge | e2-standard-4, n2-standard-4 | Standard_D4s_v5 | ecs.g6.xlarge | bx2-4x16 | b3-16 |
cd-standard-8-32 | 8 | 32 GiB | 160 GiB | m5.2xlarge | e2-standard-8, n2-standard-8 | Standard_D8s_v5 | ecs.g6.2xlarge | bx2-8x32 | b3-32 |
cd-standard-2-2 is the default instance type: it is what a launch that
names no type receives.
Compute — 1:2
Section titled “Compute — 1:2”| Name | vCPU | RAM | Root disk | AWS | GCP | Azure | Alibaba | IBM | OVH |
|---|---|---|---|---|---|---|---|---|---|
cd-compute-2-4 | 2 | 4 GiB | 80 GiB | c5.large | c2d-highcpu-2 | Standard_F2s_v2, Standard_B2s | ecs.c6.large | cx2-2x4 | c3-4 |
cd-compute-4-8 | 4 | 8 GiB | 120 GiB | c5.xlarge | c2d-highcpu-4 | Standard_F4s_v2 | ecs.c6.xlarge | cx2-4x8 | c3-8 |
cd-compute-8-16 | 8 | 16 GiB | 160 GiB | c5.2xlarge | c2d-highcpu-8 | Standard_F8s_v2 | ecs.c6.2xlarge | cx2-8x16 | c3-16 |
Memory — 1:8
Section titled “Memory — 1:8”| Name | vCPU | RAM | Root disk | AWS | GCP | Azure | Alibaba | IBM | OVH |
|---|---|---|---|---|---|---|---|---|---|
cd-memory-2-16 | 2 | 16 GiB | 80 GiB | r5.large | e2-highmem-2 | Standard_E2s_v5 | ecs.r6.large | mx2-2x16 | r3-16 |
cd-memory-4-32 | 4 | 32 GiB | 120 GiB | r5.xlarge | e2-highmem-4 | Standard_E4s_v5 | ecs.r6.xlarge | mx2-4x32 | r3-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.
Using an alias
Section titled “Using an alias”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 1resource "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.
What no shape has
Section titled “What no shape has”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.
instanceStorageSupportedisfalseon every type. Storage is the root disk plus attached volumes — see Volume types. - No bare metal, no dedicated host, no placement group.
Capacity and overcommit
Section titled “Capacity and overcommit”| Rule | Value |
|---|---|
| Physical | 12 threads, 62 GB RAM, 1.7 TB HDD |
| vCPU capacity sold | 24 |
| CPU overcommit | at most 2× |
| Memory capacity sold | 51200 MiB (50 GiB) |
| Memory overcommit | never |
| Host reserve | 12 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.
Shapes that were removed, and why
Section titled “Shapes that were removed, and why”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.
Go further
Section titled “Go further”- Machine images
- Image and catalogue actions —
DescribeInstanceTypesitself - How prices are set
- RunInstances