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.md and the image-id mentions in first-cluster.md, guides/prebaked-images.md, and guides/geo-redundancy.md.

${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.