Fehlgeschlagenes Holen klar benennen, Ausweg aus dem halben Zustand
Gemeldet war "CMK_IMAGE wird nicht aktualisiert". Nachgemessen: das
Neu-Einlesen funktioniert - ein Unterprozess schreibt, load_env liest,
der Wert kommt an. Die eigentliche Ursache war, dass der Pull gegen die
Registry fehlschlug und CMK_IMAGE deshalb zu Recht unveraendert blieb.
Nur sagte der Assistent das nicht, sondern zeigte die generische
Meldung "passt nicht zu den Vorgaben" - was wie ein Anzeigefehler
aussieht.
- Der Assistent wertet den Rueckgabewert jetzt aus und meldet
"Image wurde NICHT geholt", nennt CMK_IMAGE unveraendert und die
naechsten Schritte (image repos, Tarball-Weg, Zugangsdaten).
- Edition und Version werden bei einem Fehlschlag nicht halb
uebernommen: --remember greift erst nach erfolgreichem Holen.
Damit man aus einem bereits bestehenden halben Zustand herauskommt,
gibt es jetzt den umgekehrten Weg:
image use REF --remember
leitet CMK_EDITION und CMK_VERSION aus der Image-Referenz ab
(check-mk-<edition>:<tag>). Im Menue steht hinter den drei Werten
entsprechend eine Auswahl: Assistent starten, Vorgaben an das
verwendete Image angleichen, oder nichts aendern.
Geprueft: Schreiben im Unterprozess und Neu-Einlesen, Ableiten der
Vorgaben aus dem Image (Warnung verschwindet danach), Assistent mit
absichtlich falschen Zugangsdaten meldet den Fehlschlag und laesst
die .env unangetastet.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -943,6 +943,24 @@ Compose und die systemd-Units verwenden ausschliesslich CMK_IMAGE.
|
||||
Aus einem Tarball geladene Images (`localhost/…`) gelten dabei als stimmig,
|
||||
solange Name und Tag passen.
|
||||
|
||||
**Wenn das Holen fehlschlägt**, bleibt `CMK_IMAGE` unverändert – das ist
|
||||
Absicht, denn das alte Image läuft ja weiter. Der Assistent sagt das dann auch
|
||||
ausdrücklich („Image wurde NICHT geholt") statt nur auf die Abweichung
|
||||
hinzuweisen. Es bleibt trotzdem ein Zustand, in dem Edition und Version etwas
|
||||
anderes behaupten als das benutzte Image. Dafür gibt es zwei Auswege – beide
|
||||
im Menü unter den drei Werten:
|
||||
|
||||
| Weg | Wirkung |
|
||||
|---|---|
|
||||
| **Assistent starten** | holt das gewünschte Image; danach passt alles |
|
||||
| **Vorgaben an das verwendete Image angleichen** | schreibt Edition und Version aus `CMK_IMAGE` zurück – die Warnung verschwindet, es ändert sich nichts am Betrieb |
|
||||
|
||||
Auf der Kommandozeile ist das zweite:
|
||||
|
||||
```bash
|
||||
./scripts/cmk-manage.sh image use "$CMK_IMAGE" --remember
|
||||
```
|
||||
|
||||
### 8.8 Registry-Pfad herausfinden
|
||||
|
||||
„Login Succeeded" heisst noch nicht, dass der Pfad stimmt. Meldet der Pull
|
||||
|
||||
@@ -947,6 +947,23 @@ the edition or version is changed:
|
||||
the image contains …".) Images loaded from a tarball (`localhost/…`) count as
|
||||
consistent as long as name and tag match.
|
||||
|
||||
**If fetching fails**, `CMK_IMAGE` stays unchanged – deliberately, because the
|
||||
old image keeps running. The wizard then says so explicitly ("Image wurde NICHT
|
||||
geholt") instead of merely pointing at the mismatch. It still leaves a state in
|
||||
which edition and version claim something different from the image in use.
|
||||
There are two ways out, both in the menu underneath the three values:
|
||||
|
||||
| Route | Effect |
|
||||
|---|---|
|
||||
| **Assistent starten** (run the wizard) | fetches the wanted image; everything matches afterwards |
|
||||
| **Vorgaben an das verwendete Image angleichen** (align the defaults) | writes edition and version back from `CMK_IMAGE` – the warning disappears, nothing about the running setup changes |
|
||||
|
||||
On the command line the second one is:
|
||||
|
||||
```bash
|
||||
./scripts/cmk-manage.sh image use "$CMK_IMAGE" --remember
|
||||
```
|
||||
|
||||
### 8.8 Finding the registry path
|
||||
|
||||
"Login Succeeded" does not yet mean the path is right. If the pull reports
|
||||
|
||||
+69
-13
@@ -139,7 +139,9 @@ KOMMANDOS - Checkmk-Image beschaffen
|
||||
--keep Tarball nach dem Einspielen behalten
|
||||
--remember CMK_EDITION und CMK_VERSION mit in die .env schreiben
|
||||
image load --file F bereits heruntergeladenen Tarball einspielen
|
||||
image use REF vorhandenes Image als CMK_IMAGE in die .env eintragen
|
||||
image use REF [--remember] vorhandenes Image als CMK_IMAGE eintragen;
|
||||
mit --remember auch CMK_EDITION und CMK_VERSION
|
||||
daraus ableiten
|
||||
|
||||
KOMMANDOS - Konfiguration
|
||||
config list [--category KAT] alle Einstellungen mit aktuellen Werten
|
||||
@@ -743,11 +745,34 @@ image_cmd_load() {
|
||||
# image use / list / status
|
||||
# ---------------------------------------------------------------------
|
||||
image_cmd_use() {
|
||||
[ $# -ge 1 ] || die "Image-Referenz fehlt, z.B.:
|
||||
local ref="" remember=""
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
--remember) remember=1; shift ;;
|
||||
*) [ -z "$ref" ] && { ref="$1"; shift; } || die "Unbekannte Option: $1" ;;
|
||||
esac
|
||||
done
|
||||
[ -n "$ref" ] || die "Image-Referenz fehlt, z.B.:
|
||||
$SELF image use localhost/checkmk/check-mk-enterprise:2.3.0p23"
|
||||
local ref="$1"
|
||||
image_exists_local "$ref" || warn "'$ref' ist lokal (noch) nicht vorhanden."
|
||||
image_set_env "$ref"
|
||||
|
||||
# Edition und Version aus der Referenz ableiten, damit die Vorgaben
|
||||
# nicht dauerhaft etwas anderes behaupten als das benutzte Image.
|
||||
if [ -n "$remember" ]; then
|
||||
local tag repo name ed
|
||||
tag="${ref##*:}"; repo="${ref%:*}"
|
||||
case "$repo" in */*) name="${repo##*/}" ;; *) name="$repo" ;; esac
|
||||
ed="${name#check-mk-}"
|
||||
if [ "$ed" != "$name" ] && edition_known "$ed"; then
|
||||
env_set CMK_EDITION "$ed"; ok "CMK_EDITION=$ed"
|
||||
else
|
||||
warn "Edition liess sich aus '$ref' nicht ableiten - CMK_EDITION bleibt."
|
||||
fi
|
||||
if [ "$tag" != "$ref" ] && [ -n "$tag" ]; then
|
||||
env_set CMK_VERSION "$tag"; ok "CMK_VERSION=$tag"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
image_cmd_list() {
|
||||
@@ -3661,10 +3686,11 @@ Benutzer:" "")" || return 0
|
||||
fi
|
||||
|
||||
# --- ausfuehren ----------------------------------------------------
|
||||
local rc=0
|
||||
case "$src" in
|
||||
registry)
|
||||
ui_run "Image holen: $ed $ver" bash -c \
|
||||
"cd '$PROJECT_DIR' && '$SELF' -y image pull --edition '$ed' --version '$ver' --remember ${extra[*]+${extra[*]}}" ;;
|
||||
"cd '$PROJECT_DIR' && '$SELF' -y image pull --edition '$ed' --version '$ver' --remember ${extra[*]+${extra[*]}}" || rc=1 ;;
|
||||
download)
|
||||
case "$ver" in
|
||||
*-latest|latest|*-daily)
|
||||
@@ -3674,14 +3700,14 @@ z.B. 2.3.0p23 - '$ver' gibt es dort nicht."
|
||||
return 0 ;;
|
||||
esac
|
||||
ui_run "Tarball holen: $ed $ver" bash -c \
|
||||
"cd '$PROJECT_DIR' && '$SELF' -y image download --edition '$ed' --version '$ver' --remember ${extra[*]+${extra[*]}}" ;;
|
||||
"cd '$PROJECT_DIR' && '$SELF' -y image download --edition '$ed' --version '$ver' --remember ${extra[*]+${extra[*]}}" || rc=1 ;;
|
||||
file)
|
||||
local lf
|
||||
lf="$(ui_pick_file "${IMAGE_DIR:-$PROJECT_DIR/images}" '*.tar.gz')" || return 0
|
||||
[ -n "$lf" ] || return 0
|
||||
ui_run "Image einspielen" bash -c \
|
||||
"cd '$PROJECT_DIR' && '$SELF' -y image load --file '$lf'"
|
||||
ui_run "Edition/Version eintragen" bash -c \
|
||||
"cd '$PROJECT_DIR' && '$SELF' -y image load --file '$lf'" || rc=1
|
||||
[ "$rc" = 0 ] && ui_run "Edition/Version eintragen" bash -c \
|
||||
"cd '$PROJECT_DIR' && '$SELF' -y config set CMK_EDITION '$ed' && '$SELF' -y config set CMK_VERSION '$ver'" ;;
|
||||
setonly)
|
||||
ui_run "Eintragen" bash -c \
|
||||
@@ -3691,6 +3717,22 @@ z.B. 2.3.0p23 - '$ver' gibt es dort nicht."
|
||||
load_env "${ENV_FILE:-$PROJECT_DIR/.env}"
|
||||
|
||||
# --- Ergebnis ------------------------------------------------------
|
||||
if [ "$rc" != 0 ]; then
|
||||
ui_msg "Image wurde NICHT geholt" \
|
||||
"Der Vorgang ist fehlgeschlagen - siehe die Ausgabe davor.
|
||||
|
||||
CMK_IMAGE ist deshalb unveraendert:
|
||||
${CMK_IMAGE:-<nicht gesetzt>}
|
||||
|
||||
Naechste Schritte:
|
||||
* Bei der Registry: 'image repos' zeigt, welche Pfade es dort
|
||||
wirklich gibt. Der geratene Pfad ist die haeufigste Ursache.
|
||||
* Sonst den Tarball-Weg nehmen - fuer Enterprise ist das der
|
||||
von Checkmk dokumentierte Weg.
|
||||
* Zugangsdaten pruefen: '>> Zugangsdaten jetzt pruefen'"
|
||||
return 0
|
||||
fi
|
||||
|
||||
local cm
|
||||
if cm="$(image_consistency_check)"; then
|
||||
ui_msg "Fertig" \
|
||||
@@ -3799,15 +3841,29 @@ gui_settings_edit() {
|
||||
cur="$(settings_value "$key")"
|
||||
|
||||
if [ "$typ" = info ]; then
|
||||
if ui_yesno "$key" \
|
||||
local cm sel2
|
||||
if cm="$(image_consistency_check)"; then
|
||||
cm="Edition, Version und Image passen zusammen."
|
||||
fi
|
||||
sel2="$(ui_menu "$key" \
|
||||
"Aktuell: ${cur:-<leer>}
|
||||
|
||||
Dieser Wert wird vom Assistenten gesetzt, damit Edition,
|
||||
Version und das tatsaechlich verwendete Image zusammenpassen.
|
||||
$cm
|
||||
|
||||
Assistent jetzt starten?"; then
|
||||
gui_image_wizard || true
|
||||
fi
|
||||
Diese drei Werte setzt der Assistent gemeinsam." \
|
||||
wizard "Assistent starten (Image beschaffen)" \
|
||||
angleichen "Vorgaben an das VERWENDETE Image angleichen" \
|
||||
nichts "Nichts aendern")" || { load_env "${ENV_FILE:-$PROJECT_DIR/.env}"; return 0; }
|
||||
case "$sel2" in
|
||||
wizard) gui_image_wizard || true ;;
|
||||
angleichen)
|
||||
if [ -z "${CMK_IMAGE:-}" ]; then
|
||||
ui_msg "Nicht moeglich" "CMK_IMAGE ist nicht gesetzt."
|
||||
else
|
||||
ui_run "Vorgaben angleichen" bash -c \
|
||||
"cd '$PROJECT_DIR' && '$SELF' -y image use '$CMK_IMAGE' --remember"
|
||||
fi ;;
|
||||
esac
|
||||
load_env "${ENV_FILE:-$PROJECT_DIR/.env}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user