Fehlendes Tag in der Registry: auf den Tarball verweisen

Die Diagnose auf dem Zielsystem zeigte: enterprise/check-mk-enterprise
fuehrt im Zweig 2.4.0 nur p31 aufwaerts, dazu -latest und die taeglichen
Bauten. 2.4.0p9 ist dort herausgerollt - die Registry haelt nur die
juengsten Patchstaende vor.

Nachgemessen, dass das Downloadportal die Version weiterhin hat:
    .../2.4.0p9/check-mk-enterprise-docker-2.4.0p9.tar.gz   HTTP 401
also vorhanden, nur geschuetzt. Auch das oeffentliche Versionsarchiv
listet sie mit genau diesem Dateinamen.

Das ist kein Randfall, sondern der Normalfall bei einer Migration:
"omd restore" verlangt exakt die Version der Quell-Site, und die ist in
aller Regel aelter als das, was die Registry noch vorhaelt.

image_diagnose_ref sieht deshalb bei einem fehlenden Tag im Archiv nach
und nennt, wenn die Version dort liegt, den Tarball-Weg samt fertigem
Kommando - statt den Benutzer zwischen Registry und Portal suchen zu
lassen. Mit dem Unterschied zwischen beiden Quellen ist das jetzt auch
in beiden Sprachfassungen erklaert.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-20 18:49:27 +02:00
co-authored by Claude Opus 5
parent 43557e9753
commit 7a74042394
3 changed files with 56 additions and 3 deletions
+13
View File
@@ -795,6 +795,19 @@ Abgefragt werden bis zu drei Quellen:
| Registry (Docker Hub bzw. registry.checkmk.com) | `registry` | nur für Enterprise | | Registry (Docker Hub bzw. registry.checkmk.com) | `registry` | nur für Enterprise |
| Downloadportal (Verzeichnis-Listing) | `download` | ja | | Downloadportal (Verzeichnis-Listing) | `download` | ja |
> **Registry und Downloadportal führen nicht dasselbe.** Die Registry hält in
> der Regel nur die **jüngsten** Patchstände vor – bei `2.4.0` etwa `p31`
> aufwärts, dazu `2.4.0-latest` und die täglichen Bauten. Ältere Stände sind
> dort herausgerollt. Das Downloadportal ist dagegen ein **Archiv** und hat sie
> weiterhin.
>
> Das ist genau dann entscheidend, wenn eine **bestimmte** Version gebraucht
> wird – bei einer Migration nämlich, weil `omd restore` exakt die Version der
> Quell-Site verlangt ([Kapitel 17.4](#174-schritt-3--zielsystem-auf-die-richtige-version-bringen)).
> Für solche Fälle ist der Tarball der richtige Weg, nicht die Registry.
> `image why` weist von sich aus darauf hin, wenn ein Tag in der Registry
> fehlt, die Version im Archiv aber vorhanden ist.
Ohne `--source` werden alle drei versucht – so kommt auch ohne hinterlegte Ohne `--source` werden alle drei versucht – so kommt auch ohne hinterlegte
Zugangsdaten eine brauchbare Liste zustande: Zugangsdaten eine brauchbare Liste zustande:
+13
View File
@@ -801,6 +801,19 @@ Up to three sources are queried:
| registry (Docker Hub or registry.checkmk.com) | `registry` | only for Enterprise | | registry (Docker Hub or registry.checkmk.com) | `registry` | only for Enterprise |
| download portal (directory listing) | `download` | yes | | download portal (directory listing) | `download` | yes |
> **The registry and the download portal do not carry the same thing.** The
> registry usually keeps only the **most recent** patch levels – for `2.4.0`
> roughly `p31` upwards, plus `2.4.0-latest` and the daily builds. Older levels
> have rolled out of it. The download portal, by contrast, is an **archive** and
> still has them.
>
> This matters precisely when a **specific** version is required – during a
> migration, because `omd restore` demands exactly the version of the source
> site ([chapter 17.4](#174-step-3--bring-the-target-system-to-the-right-version)).
> For those cases the tarball is the right route, not the registry. `image why`
> points this out by itself when a tag is missing from the registry but the
> version exists in the archive.
Without `--source` all three are tried – so even without stored credentials you Without `--source` all three are tried – so even without stored credentials you
get a usable list: get a usable list:
+30 -3
View File
@@ -1294,9 +1294,36 @@ image_diagnose_ref() { # ref
printf ' %sVorhanden (neueste)%s\n' "$C_BLD" "$C_RST" printf ' %sVorhanden (neueste)%s\n' "$C_BLD" "$C_RST"
fi fi
printf ' %s\n' "${near[@]}" printf ' %s\n' "${near[@]}"
printf '\n Uebernehmen mit:\n'
printf ' %s image use %s/%s:<tag> --remember\n' "$SELF" "$reg" "$repo" # Registries halten meist nur die juengsten Patchstaende vor. Aeltere
printf ' %s up\n' "$SELF" # Versionen liegen weiterhin im Downloadportal - und genau die braucht
# man bei einer Migration, weil "omd restore" die exakte Version
# verlangt. Deshalb hier nachsehen, statt den Benutzer suchen zu lassen.
local tarball=""
if [ -n "$tag" ]; then
tarball="$(archive_docker_file "${CMK_EDITION:-enterprise}" "$tag" 2>/dev/null || true)"
fi
if [ -n "$tarball" ]; then
cat <<EOF
${C_BLD}Diese Version gibt es aber als Tarball${C_RST}
Registries halten in der Regel nur die juengsten Patchstaende vor;
das Downloadportal ist ein Archiv. Dort liegt:
$tarball
Holen und einspielen:
$SELF image download --edition ${CMK_EDITION:-enterprise} --version $tag
$SELF up
Das ist der richtige Weg, wenn eine BESTIMMTE Version gebraucht wird -
etwa bei einer Migration, weil "omd restore" genau die Version der
Quell-Site verlangt.
EOF
else
printf '\n Uebernehmen mit:\n'
printf ' %s image use %s/%s:<tag> --remember\n' "$SELF" "$reg" "$repo"
printf ' %s up\n' "$SELF"
fi
printf '\n Alle Tags: %s image versions --source registry --edition %s --all\n\n' \ printf '\n Alle Tags: %s image versions --source registry --edition %s --all\n\n' \
"$SELF" "${CMK_EDITION:-enterprise}" "$SELF" "${CMK_EDITION:-enterprise}"
return 1 return 1