Templates hardcode location-specific image ids — remove the defaults, cover in docs
Problem
whitesky.cloud vm-image ids are location-specific and not portable — an id that exists in one location does not exist in another. Several templates default the image-id variables to our QA VCO's ids, so anyone rendering them without overriding gets a wrong/nonexistent image for their location (it either fails to boot or silently boots the wrong image).
Hardcoded defaults (from templates/)
| Variable & default | Templates |
|---|---|
${VCO_IMAGE_ID:=75} (QA stock Ubuntu) |
cluster-template.yaml, cluster-template-geo.yaml
|
${VCO_IMAGE_ID:=164} (QA pre-baked) |
cluster-template-ccm.yaml, -backup.yaml, -airgapped.yaml
|
${VCO_IMAGE_ID_PRIMARY:=164} / ${VCO_IMAGE_ID_PAIRED:=81815}
|
cluster-template-geo-multilocation.yaml |
${VCO_REGISTRY_IMAGE_ID:=75} |
cluster-template-airgapped.yaml |
cluster-template-prebaked.yaml already uses a bare ${VCO_IMAGE_ID} (no default) — that's the model to follow.
Fix
-
Remove the
:=<id>defaults so the image-id variables are required (bare${VCO_IMAGE_ID}, etc.), matching prebaked. A missing id then fails loudly at render time instead of pointing at a foreign image. -
Document it: state that image ids are location-scoped and non-portable, and how to find the right id for a location (whitesky.cloud portal / VCO API). Update the "variables you must always supply" table in
docs/reference/templates.mdand the image-id mentions infirst-cluster.md,guides/prebaked-images.md, andguides/geo-redundancy.md.
Related (same instance-specific-default smell — worth fixing together)
${VCO_LOCATION:=qt-gen-dc01-003} is hardcoded to our QA location in cluster-template-ccm.yaml, -backup.yaml, -airgapped.yaml. Same problem — should be required too (the base template already requires it).
Acceptance
No template ships a hardcoded image-id (or location) default; docs explain how to obtain the per-location image id.