"Nur eintragen" setzt jetzt auch CMK_IMAGE
Berechtigter Einwand: wer Edition und Version waehlt und "nichts holen"
sagt, will das Image SETZEN, nicht bloss zwei Vorgaben notieren. Mein
Entwurf trennte das kuenstlich - und hinterliess genau dadurch den
Zustand, den die Abweichungswarnung dann anmahnte. Das war die Ursache
des Hin und Her.
Die Referenz laesst sich aus Edition und Version bilden:
enterprise 2.4.0p9 -> registry.checkmk.com/enterprise/check-mk-enterprise:2.4.0p9
raw 2.4.0p9 -> docker.io/checkmk/check-mk-raw:2.4.0p9
Nur bei einem aus dem Tarball geladenen Image geht das nicht, da kommt
der Name aus dem Archiv.
Deshalb:
image use --edition E --version V
bildet die Referenz und traegt CMK_IMAGE, CMK_EDITION und CMK_VERSION
ein, ohne irgendetwas herunterzuladen. Geholt wird beim naechsten "up"
durch die Runtime selbst.
Im Assistenten heisst der Weg jetzt "Nur eintragen - geholt wird beim
naechsten Start" und nutzt genau das. Damit setzen ALLE vier Wege
CMK_IMAGE; sie unterscheiden sich nur darin, ob dabei schon etwas
geholt wird. Die drei Werte bleiben dadurch von selbst stimmig, und die
Abweichungswarnung tritt im normalen Betrieb nicht mehr auf.
Geprueft: das Kommando und der Assistentenweg setzen alle drei Werte,
danach meldet "image status" keine Abweichung mehr.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -913,13 +913,33 @@ registry.checkmk.com/enterprise/check-mk-enterprise:2.3.0p9 (Registry)
|
|||||||
localhost/checkmk/check-mk-enterprise:2.3.0p9 (aus Tarball geladen)
|
localhost/checkmk/check-mk-enterprise:2.3.0p9 (aus Tarball geladen)
|
||||||
```
|
```
|
||||||
|
|
||||||
Deshalb hält `CMK_IMAGE` fest, was **wirklich vorhanden ist**, und wird von
|
Deshalb hält `CMK_IMAGE` fest, was **wirklich gilt**. Gesetzt wird der Wert von
|
||||||
`image pull`, `image download`, `image load` und `image use` gesetzt – von Hand
|
`image pull`, `image download`, `image load` und `image use` – von Hand muss man
|
||||||
muss man dort normalerweise nichts eintragen. In der Oberfläche sind die drei
|
dort nichts eintragen. In der Oberfläche sind die drei Werte deshalb nicht
|
||||||
Werte deshalb gar nicht einzeln editierbar: sie werden vom Assistenten
|
einzeln editierbar: der Assistent setzt sie gemeinsam. Auf der Kommandozeile
|
||||||
gemeinsam gesetzt, damit sie nicht auseinanderlaufen. Auf der Kommandozeile
|
|
||||||
bleiben sie einzeln setzbar (`config set …`).
|
bleiben sie einzeln setzbar (`config set …`).
|
||||||
|
|
||||||
|
**Nur eintragen, ohne etwas herunterzuladen.** Aus Edition und Version lässt
|
||||||
|
sich die Referenz bilden – ein Download ist dafür nicht nötig:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/cmk-manage.sh image use --edition enterprise --version 2.4.0p9
|
||||||
|
# -> CMK_IMAGE=registry.checkmk.com/enterprise/check-mk-enterprise:2.4.0p9
|
||||||
|
# CMK_EDITION=enterprise
|
||||||
|
# CMK_VERSION=2.4.0p9
|
||||||
|
```
|
||||||
|
|
||||||
|
Das Image selbst holt die Runtime beim nächsten `up`. Im Assistenten heißt
|
||||||
|
dieser Weg **„Nur eintragen – geholt wird beim nächsten Start"**. Braucht die
|
||||||
|
Registry eine Anmeldung (Enterprise), muss die einmal erfolgt sein – entweder
|
||||||
|
über den Weg „Registry holen" oder mit
|
||||||
|
`podman login registry.checkmk.com`.
|
||||||
|
|
||||||
|
> **Alle vier Wege des Assistenten setzen `CMK_IMAGE`** – sie unterscheiden
|
||||||
|
> sich nur darin, ob dabei schon etwas geholt wird. Deshalb bleiben die drei
|
||||||
|
> Werte von selbst stimmig, und die Abweichungswarnung tritt im normalen
|
||||||
|
> Betrieb gar nicht mehr auf.
|
||||||
|
|
||||||
Auf der Kommandozeile übernehmen `image pull` und `image download` mit
|
Auf der Kommandozeile übernehmen `image pull` und `image download` mit
|
||||||
`--remember` die Edition und Version gleich mit in die `.env`:
|
`--remember` die Edition und Version gleich mit in die `.env`:
|
||||||
|
|
||||||
|
|||||||
+24
-6
@@ -918,12 +918,30 @@ registry.checkmk.com/enterprise/check-mk-enterprise:2.3.0p9 (registry)
|
|||||||
localhost/checkmk/check-mk-enterprise:2.3.0p9 (loaded from a tarball)
|
localhost/checkmk/check-mk-enterprise:2.3.0p9 (loaded from a tarball)
|
||||||
```
|
```
|
||||||
|
|
||||||
So `CMK_IMAGE` records what is **actually there**, and it is written by
|
So `CMK_IMAGE` records what **actually applies**. It is written by
|
||||||
`image pull`, `image download`, `image load` and `image use` – you normally
|
`image pull`, `image download`, `image load` and `image use` – you never have to
|
||||||
never have to type anything there by hand. In the interface the three values
|
type anything there by hand. In the interface the three values are therefore not
|
||||||
are therefore not editable individually: the wizard sets them together so they
|
editable individually: the wizard sets them together. On the command line they
|
||||||
cannot drift apart. On the command line they remain individually settable
|
remain individually settable (`config set …`).
|
||||||
(`config set …`).
|
|
||||||
|
**Recording it without downloading anything.** The reference can be built from
|
||||||
|
edition and version – no download required:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/cmk-manage.sh image use --edition enterprise --version 2.4.0p9
|
||||||
|
# -> CMK_IMAGE=registry.checkmk.com/enterprise/check-mk-enterprise:2.4.0p9
|
||||||
|
# CMK_EDITION=enterprise
|
||||||
|
# CMK_VERSION=2.4.0p9
|
||||||
|
```
|
||||||
|
|
||||||
|
The image itself is fetched by the runtime on the next `up`. In the wizard this
|
||||||
|
route is called **"Nur eintragen – geholt wird beim naechsten Start"**. If the
|
||||||
|
registry needs a login (Enterprise), that has to have happened once – either via
|
||||||
|
the "Registry holen" route or with `podman login registry.checkmk.com`.
|
||||||
|
|
||||||
|
> **All four wizard routes set `CMK_IMAGE`** – they only differ in whether
|
||||||
|
> something is fetched right away. The three values therefore stay consistent by
|
||||||
|
> themselves, and the mismatch warning no longer appears in normal operation.
|
||||||
|
|
||||||
On the command line, `image pull` and `image download` take `--remember` to
|
On the command line, `image pull` and `image download` take `--remember` to
|
||||||
store the edition and version in `.env` as well:
|
store the edition and version in `.env` as well:
|
||||||
|
|||||||
+50
-21
@@ -140,9 +140,13 @@ KOMMANDOS - Checkmk-Image beschaffen
|
|||||||
--keep Tarball nach dem Einspielen behalten
|
--keep Tarball nach dem Einspielen behalten
|
||||||
--remember CMK_EDITION und CMK_VERSION mit in die .env schreiben
|
--remember CMK_EDITION und CMK_VERSION mit in die .env schreiben
|
||||||
image load --file F bereits heruntergeladenen Tarball einspielen
|
image load --file F bereits heruntergeladenen Tarball einspielen
|
||||||
image use REF [--remember] vorhandenes Image als CMK_IMAGE eintragen;
|
image use REF [--remember] Image als CMK_IMAGE eintragen; mit
|
||||||
mit --remember auch CMK_EDITION und CMK_VERSION
|
--remember auch CMK_EDITION und CMK_VERSION daraus
|
||||||
daraus ableiten
|
ableiten
|
||||||
|
image use --edition E --version V
|
||||||
|
umgekehrt: die Referenz aus Edition und Version
|
||||||
|
bilden und eintragen, OHNE etwas herunterzuladen.
|
||||||
|
Geholt wird sie beim naechsten "up".
|
||||||
|
|
||||||
KOMMANDOS - Konfiguration
|
KOMMANDOS - Konfiguration
|
||||||
config list [--category KAT] alle Einstellungen mit aktuellen Werten
|
config list [--category KAT] alle Einstellungen mit aktuellen Werten
|
||||||
@@ -775,21 +779,39 @@ image_cmd_load() {
|
|||||||
# image use / list / status
|
# image use / list / status
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
image_cmd_use() {
|
image_cmd_use() {
|
||||||
local ref="" remember=""
|
local ref="" remember="" edition="" version=""
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
--remember) remember=1; shift ;;
|
--remember) remember=1; shift ;;
|
||||||
*) [ -z "$ref" ] && { ref="$1"; shift; } || die "Unbekannte Option: $1" ;;
|
--edition) edition="$2"; shift 2 ;;
|
||||||
|
--version) version="$2"; shift 2 ;;
|
||||||
|
*) if [ -z "$ref" ]; then ref="$1"; shift; else die "Unbekannte Option: $1"; fi ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
[ -n "$ref" ] || die "Image-Referenz fehlt, z.B.:
|
|
||||||
$SELF image use localhost/checkmk/check-mk-enterprise:2.3.0p23"
|
# Ohne fertige Referenz laesst sie sich aus Edition und Version
|
||||||
image_exists_local "$ref" || warn "'$ref' ist lokal (noch) nicht vorhanden."
|
# bilden. Dafuer muss nichts heruntergeladen werden - die Runtime
|
||||||
|
# holt das Image beim naechsten Start selbst.
|
||||||
|
if [ -z "$ref" ] && [ -n "$edition" ]; then
|
||||||
|
edition_known "$edition" || die "Unbekannte Edition '$edition'."
|
||||||
|
[ -n "$version" ] || die "--version fehlt."
|
||||||
|
ref="$(edition_repo "$edition"):$version"
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -n "$ref" ] || die "Image-Referenz fehlt. Entweder direkt:
|
||||||
|
$SELF image use localhost/checkmk/check-mk-enterprise:2.3.0p23
|
||||||
|
oder aus Edition und Version gebildet:
|
||||||
|
$SELF image use --edition enterprise --version 2.4.0p9"
|
||||||
|
|
||||||
|
image_exists_local "$ref" || log "'$ref' ist lokal noch nicht vorhanden - wird beim naechsten '$SELF up' geholt."
|
||||||
image_set_env "$ref"
|
image_set_env "$ref"
|
||||||
|
|
||||||
# Edition und Version aus der Referenz ableiten, damit die Vorgaben
|
# Edition und Version mitfuehren, damit die Vorgaben nicht dauerhaft
|
||||||
# nicht dauerhaft etwas anderes behaupten als das benutzte Image.
|
# etwas anderes behaupten als das benutzte Image.
|
||||||
if [ -n "$remember" ]; then
|
if [ -n "$edition" ]; then
|
||||||
|
env_set CMK_EDITION "$edition"; ok "CMK_EDITION=$edition"
|
||||||
|
env_set CMK_VERSION "$version"; ok "CMK_VERSION=$version"
|
||||||
|
elif [ -n "$remember" ]; then
|
||||||
local tag repo name ed
|
local tag repo name ed
|
||||||
tag="${ref##*:}"; repo="${ref%:*}"
|
tag="${ref##*:}"; repo="${ref%:*}"
|
||||||
case "$repo" in */*) name="${repo##*/}" ;; *) name="$repo" ;; esac
|
case "$repo" in */*) name="${repo##*/}" ;; *) name="$repo" ;; esac
|
||||||
@@ -4039,11 +4061,14 @@ rechts der Name auf checkmk.com." \
|
|||||||
src="$(ui_menu "Image beschaffen (3/3) - Bezugsweg" \
|
src="$(ui_menu "Image beschaffen (3/3) - Bezugsweg" \
|
||||||
"$ed $ver
|
"$ed $ver
|
||||||
|
|
||||||
Woher soll das Image kommen?" \
|
Woher soll das Image kommen?
|
||||||
|
|
||||||
|
Alle vier Wege tragen CMK_IMAGE ein. Nur der letzte
|
||||||
|
laedt dabei nichts herunter." \
|
||||||
registry "Registry holen ($reg_state)" \
|
registry "Registry holen ($reg_state)" \
|
||||||
download "Tarball herunterladen ($dl_state)" \
|
download "Tarball herunterladen ($dl_state)" \
|
||||||
file "Vorhandene Tarball-Datei einspielen" \
|
file "Vorhandene Tarball-Datei einspielen" \
|
||||||
setonly "Nichts holen, nur Edition/Version eintragen")" || return 0
|
setonly "Nur eintragen - geholt wird beim naechsten Start")" || return 0
|
||||||
|
|
||||||
# --- Zugangsdaten nur erfragen, wenn sie wirklich fehlen -----------
|
# --- Zugangsdaten nur erfragen, wenn sie wirklich fehlen -----------
|
||||||
local -a extra=()
|
local -a extra=()
|
||||||
@@ -4096,8 +4121,10 @@ z.B. 2.3.0p23 - '$ver' gibt es dort nicht."
|
|||||||
[ "$rc" = 0 ] && ui_run "Edition/Version eintragen" bash -c \
|
[ "$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'" ;;
|
"cd '$PROJECT_DIR' && '$SELF' -y config set CMK_EDITION '$ed' && '$SELF' -y config set CMK_VERSION '$ver'" ;;
|
||||||
setonly)
|
setonly)
|
||||||
|
# Setzt Edition, Version UND das daraus gebildete Image.
|
||||||
|
# Heruntergeladen wird nichts - das erledigt "up" bei Bedarf.
|
||||||
ui_run "Eintragen" bash -c \
|
ui_run "Eintragen" bash -c \
|
||||||
"cd '$PROJECT_DIR' && '$SELF' -y config set CMK_EDITION '$ed' && '$SELF' -y config set CMK_VERSION '$ver'" ;;
|
"cd '$PROJECT_DIR' && '$SELF' -y image use --edition '$ed' --version '$ver'" || rc=1 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
load_env "${ENV_FILE:-$PROJECT_DIR/.env}"
|
load_env "${ENV_FILE:-$PROJECT_DIR/.env}"
|
||||||
@@ -4119,16 +4146,18 @@ Naechste Schritte:
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$src" = setonly ]; then
|
if [ "$src" = setonly ] && [ "$rc" = 0 ]; then
|
||||||
ui_msg "Eingetragen" \
|
ui_msg "Eingetragen" \
|
||||||
"Edition und Version sind gespeichert:
|
"Verwendet wird jetzt:
|
||||||
${CMK_EDITION:-?} / ${CMK_VERSION:-?}
|
|
||||||
|
|
||||||
Es wurde KEIN Image geholt - verwendet wird weiterhin:
|
|
||||||
${CMK_IMAGE:-<nicht gesetzt>}
|
${CMK_IMAGE:-<nicht gesetzt>}
|
||||||
|
|
||||||
Zum Holen den Assistenten erneut starten und dort
|
Heruntergeladen wurde nichts - das holt die Runtime beim
|
||||||
'Registry holen' oder 'Tarball herunterladen' waehlen."
|
naechsten 'Stack steuern -> Stack starten' selbst nach.
|
||||||
|
|
||||||
|
Braucht die Registry eine Anmeldung (Enterprise), muss die
|
||||||
|
einmal erfolgt sein:
|
||||||
|
podman login ${CMK_REGISTRY:-registry.checkmk.com}
|
||||||
|
Das erledigt auch der Weg 'Registry holen'."
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user