Versionen auflisten, echtes Dateinamensschema, Editionsnamen entwirrt
Anlass war der Hinweis auf die tatsaechliche Download-URL. Am echten
Server nachgemessen:
check-mk-raw-docker-2.3.0p9.tar.gz -> 200 (frei)
check-mk-enterprise-docker-2.3.0p9.tar.gz -> 401 (geschuetzt)
check-mk-pro-docker-2.3.0p9.tar.gz -> 404
check-mk-raw-2.3.0p9.docker.tar.gz -> 404
Das bisher zuerst probierte Schema war also schlicht falsch.
Editionsnamen: checkmk.com zeigt nur noch Community/Pro/Ultimate/
Ultimate MT, Dateien und Repositories tragen bis 2.4 weiter
raw/enterprise/cloud/managed. Wer von "Pro" auf check-mk-pro-... schliesst,
bekommt 404. Die Editionsauswahl in der Oberflaeche nennt jetzt beide
Namen, die README hat eine Zuordnungstabelle, und intern werden beide
Varianten durchprobiert.
Neu: "image versions" listet verfuegbare Versionen aus bis zu drei
Quellen - Versionsarchiv von checkmk.com (oeffentlich, ohne
Zugangsdaten), Registry ueber /v2/<repo>/tags/list und das
Verzeichnis-Listing des Downloadportals. Mit --filter, --limit, --all,
--source und --bare fuer die nackte Liste zum Weiterverarbeiten. Am
Ende stehen die fertigen Kommandos zum Uebernehmen.
Das Archiv liefert ausserdem den EXAKTEN Dateinamen je Version und
Edition (data-versions im HTML). Der wird jetzt als erster Kandidat
verwendet, statt ihn zu raten - geprueft fuer raw, enterprise, cloud
und managed auf 2.3.0p9, der erste Kandidat fuer raw liefert am Server
HTTP 200.
In der Oberflaeche: neuer Punkt "Verfuegbare Versionen auflisten", und
beim Holen eines Images muss die Version nicht mehr abgetippt werden -
es erscheint eine Auswahlliste aus dem Archiv.
Gegen Docker Hub verifiziert: 2393 Tags korrekt eingelesen, Filter und
Sortierung stimmen.
Dokumentiert als Abschnitt 8.5 in beiden Sprachfassungen.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -605,12 +605,31 @@ Docker Hub.** Im Namensraum `checkmk` auf Docker Hub gibt es ausschliesslich:
|
|||||||
| **`enterprise` (2.0 – 2.4)** | **`registry.checkmk.com/enterprise/check-mk-enterprise`** oder Image-Tarball aus dem Kundenportal | **ja** |
|
| **`enterprise` (2.0 – 2.4)** | **`registry.checkmk.com/enterprise/check-mk-enterprise`** oder Image-Tarball aus dem Kundenportal | **ja** |
|
||||||
| `free` (historisch, bis 2.1) | `docker.io/checkmk/check-mk-free` | nein |
|
| `free` (historisch, bis 2.1) | `docker.io/checkmk/check-mk-free` | nein |
|
||||||
|
|
||||||
Ab Checkmk 2.5 wurden die Editionen umbenannt (Raw → Community,
|
Ab Checkmk 2.5 wurden die Editionen umbenannt; diese Images liegen wieder offen
|
||||||
Enterprise → Pro, Managed → Ultimate MT); diese Images liegen wieder offen auf
|
auf Docker Hub. Wer also eine **2.5 oder neuer** einsetzt, nimmt einfach `pro`.
|
||||||
Docker Hub. Wer also eine **2.5 oder neuer** einsetzt, nimmt einfach `pro`.
|
|
||||||
Fuer **2.2/2.3/2.4-Enterprise** fuehrt nur der Weg ueber `registry.checkmk.com`
|
Fuer **2.2/2.3/2.4-Enterprise** fuehrt nur der Weg ueber `registry.checkmk.com`
|
||||||
oder den Tarball.
|
oder den Tarball.
|
||||||
|
|
||||||
|
#### Vorsicht bei den Namen
|
||||||
|
|
||||||
|
Die Umbenennung ist die zweite grosse Stolperfalle. **checkmk.com zeigt nur
|
||||||
|
noch die neuen Namen, die Dateien und Repositories tragen bis 2.4 aber die
|
||||||
|
alten.** Konkret für 2.3.0p9 – geprüft am Versionsarchiv:
|
||||||
|
|
||||||
|
| Auswahl auf checkmk.com | `--edition` hier | tatsächlicher Dateiname |
|
||||||
|
|---|---|---|
|
||||||
|
| Community | `raw` | `check-mk-raw-docker-2.3.0p9.tar.gz` |
|
||||||
|
| **Pro** | **`enterprise`** | **`check-mk-enterprise-docker-2.3.0p9.tar.gz`** |
|
||||||
|
| Ultimate | `cloud` | `check-mk-cloud-docker-2.3.0p9.tar.gz` |
|
||||||
|
| Ultimate MT | `managed` | `check-mk-managed-docker-2.3.0p9.tar.gz` |
|
||||||
|
|
||||||
|
Wer auf der Website „Pro" wählt und daraus `check-mk-pro-docker-2.3.0p9.tar.gz`
|
||||||
|
ableitet, bekommt ein **HTTP 404** – diese Datei gibt es für 2.3 nicht.
|
||||||
|
|
||||||
|
Das Skript nimmt einem das ab: es liest den echten Dateinamen aus dem
|
||||||
|
Versionsarchiv und probiert zusätzlich beide Namensvarianten durch. In der
|
||||||
|
Oberfläche steht in der Editionsauswahl jeweils beides.
|
||||||
|
|
||||||
> Frei herunterladbar heisst nicht lizenzfrei – der Lizenzschluessel wird
|
> Frei herunterladbar heisst nicht lizenzfrei – der Lizenzschluessel wird
|
||||||
> anschliessend in Checkmk selbst hinterlegt.
|
> anschliessend in Checkmk selbst hinterlegt.
|
||||||
|
|
||||||
@@ -753,10 +772,63 @@ In der ncurses-Oberfläche ist der Test an zwei Stellen erreichbar:
|
|||||||
Nach dem Ändern eines Zugangsdaten-Feldes fragt das Menü ausserdem von sich
|
Nach dem Ändern eines Zugangsdaten-Feldes fragt das Menü ausserdem von sich
|
||||||
aus, ob gleich geprüft werden soll.
|
aus, ob gleich geprüft werden soll.
|
||||||
|
|
||||||
### 8.5 Image holen – drei Wege
|
### 8.5 Verfügbare Versionen auflisten
|
||||||
|
|
||||||
|
Statt Versionsnummern zu raten:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/cmk-manage.sh image versions --edition enterprise --filter 2.3.0p
|
||||||
|
```
|
||||||
|
|
||||||
|
Abgefragt werden bis zu drei Quellen:
|
||||||
|
|
||||||
|
| Quelle | `--source` | Zugangsdaten |
|
||||||
|
|---|---|---|
|
||||||
|
| Versionsarchiv von checkmk.com | `web` | **nein** |
|
||||||
|
| Registry (Docker Hub bzw. registry.checkmk.com) | `registry` | nur für Enterprise |
|
||||||
|
| Downloadportal (Verzeichnis-Listing) | `download` | ja |
|
||||||
|
|
||||||
|
Ohne `--source` werden alle drei versucht – so kommt auch ohne hinterlegte
|
||||||
|
Zugangsdaten eine brauchbare Liste zustande:
|
||||||
|
|
||||||
|
```
|
||||||
|
Versionsarchiv https://checkmk.com/download/archive
|
||||||
|
(oeffentlich, keine Zugangsdaten noetig)
|
||||||
|
2.3.0p50
|
||||||
|
2.3.0p49
|
||||||
|
2.3.0p48
|
||||||
|
...
|
||||||
|
|
||||||
|
Uebernehmen
|
||||||
|
aus der Registry : ./scripts/cmk-manage.sh image pull --edition enterprise --version <version>
|
||||||
|
als Tarball : ./scripts/cmk-manage.sh image download --edition enterprise --version <version>
|
||||||
|
nur eintragen : ./scripts/cmk-manage.sh config set CMK_VERSION <version>
|
||||||
|
```
|
||||||
|
|
||||||
|
Weitere Optionen: `--limit N` (Vorgabe 25), `--all`, `--filter TEXT` und
|
||||||
|
`--bare` für die nackte Liste ohne Rahmen – praktisch zum Weiterverarbeiten:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/cmk-manage.sh image versions --source web --filter 2.3.0p --bare | head -1
|
||||||
|
```
|
||||||
|
|
||||||
|
In der Oberfläche gibt es den Punkt **image → „Verfügbare Versionen
|
||||||
|
auflisten"**; beim Holen eines Images muss die Version ohnehin nicht mehr
|
||||||
|
abgetippt werden – dort erscheint eine Auswahlliste.
|
||||||
|
|
||||||
|
### 8.6 Image holen – drei Wege
|
||||||
|
|
||||||
**a) Aus einer Registry (empfohlen)**
|
**a) Aus einer Registry (empfohlen)**
|
||||||
|
|
||||||
|
Für die Enterprise-Edition entspricht das genau diesen beiden Schritten – das
|
||||||
|
Skript erledigt sie in einem Aufruf und trägt das Ergebnis in die `.env` ein:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
podman login registry.checkmk.com # bzw. docker login
|
||||||
|
podman pull registry.checkmk.com/enterprise/check-mk-enterprise:2.3.0p9
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# frei verfuegbar, ohne Anmeldung
|
# frei verfuegbar, ohne Anmeldung
|
||||||
sudo ./scripts/cmk-manage.sh image pull --edition raw --version 2.3.0-latest
|
sudo ./scripts/cmk-manage.sh image pull --edition raw --version 2.3.0-latest
|
||||||
@@ -804,7 +876,7 @@ ihn als `CMK_IMAGE` in die `.env` ein. Danach:
|
|||||||
sudo ./scripts/cmk-manage.sh up
|
sudo ./scripts/cmk-manage.sh up
|
||||||
```
|
```
|
||||||
|
|
||||||
### 8.6 Nachsehen, was gilt
|
### 8.7 Nachsehen, was gilt
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./scripts/cmk-manage.sh image status # konfiguriertes + lokale Images
|
./scripts/cmk-manage.sh image status # konfiguriertes + lokale Images
|
||||||
@@ -1370,7 +1442,7 @@ Eine Dateiauswahl mit Verzeichnisnavigation ist eingebaut.
|
|||||||
| `job list\|add\|set\|del\|run\|auto` | geplante Backups (eigene Zielpfade je Job) |
|
| `job list\|add\|set\|del\|run\|auto` | geplante Backups (eigene Zielpfade je Job) |
|
||||||
| `restore …` | Backup zurückspielen |
|
| `restore …` | Backup zurückspielen |
|
||||||
| `import …` | Migrations-Bundle einspielen |
|
| `import …` | Migrations-Bundle einspielen |
|
||||||
| `image status\|list\|pull\|download\|load\|use` | Checkmk-Image beschaffen und auswaehlen |
|
| `image status\|list\|versions\|test\|pull\|download\|load\|use` | Checkmk-Image beschaffen und auswaehlen |
|
||||||
| `browser [--engine …]` | Terminal-Browser im Container – Proxy Manager lokal bedienen |
|
| `browser [--engine …]` | Terminal-Browser im Container – Proxy Manager lokal bedienen |
|
||||||
| `config list\|get\|set\|edit` | Einstellungen der `.env` anzeigen und ändern |
|
| `config list\|get\|set\|edit` | Einstellungen der `.env` anzeigen und ändern |
|
||||||
| `npm-port [PORT]` | Port der Proxy-Manager-Oberfläche setzen/anzeigen |
|
| `npm-port [PORT]` | Port der Proxy-Manager-Oberfläche setzen/anzeigen |
|
||||||
|
|||||||
+78
-5
@@ -608,12 +608,32 @@ Hub.** The `checkmk` namespace on Docker Hub contains only:
|
|||||||
| **`enterprise` (2.0 – 2.4)** | **`registry.checkmk.com/enterprise/check-mk-enterprise`** or an image tarball from the customer portal | **yes** |
|
| **`enterprise` (2.0 – 2.4)** | **`registry.checkmk.com/enterprise/check-mk-enterprise`** or an image tarball from the customer portal | **yes** |
|
||||||
| `free` (historic, up to 2.1) | `docker.io/checkmk/check-mk-free` | no |
|
| `free` (historic, up to 2.1) | `docker.io/checkmk/check-mk-free` | no |
|
||||||
|
|
||||||
With Checkmk 2.5 the editions were renamed (Raw → Community,
|
With Checkmk 2.5 the editions were renamed; those images are publicly available
|
||||||
Enterprise → Pro, Managed → Ultimate MT); those images are publicly available
|
|
||||||
on Docker Hub again. So if you run **2.5 or newer**, simply use `pro`. For
|
on Docker Hub again. So if you run **2.5 or newer**, simply use `pro`. For
|
||||||
**2.2/2.3/2.4 Enterprise** the only routes are `registry.checkmk.com` or the
|
**2.2/2.3/2.4 Enterprise** the only routes are `registry.checkmk.com` or the
|
||||||
tarball.
|
tarball.
|
||||||
|
|
||||||
|
#### Beware of the names
|
||||||
|
|
||||||
|
The rename is the second big pitfall. **checkmk.com only shows the new names,
|
||||||
|
while files and repositories keep the old ones up to 2.4.** For 2.3.0p9
|
||||||
|
specifically – verified against the version archive:
|
||||||
|
|
||||||
|
| Choice on checkmk.com | `--edition` here | actual file name |
|
||||||
|
|---|---|---|
|
||||||
|
| Community | `raw` | `check-mk-raw-docker-2.3.0p9.tar.gz` |
|
||||||
|
| **Pro** | **`enterprise`** | **`check-mk-enterprise-docker-2.3.0p9.tar.gz`** |
|
||||||
|
| Ultimate | `cloud` | `check-mk-cloud-docker-2.3.0p9.tar.gz` |
|
||||||
|
| Ultimate MT | `managed` | `check-mk-managed-docker-2.3.0p9.tar.gz` |
|
||||||
|
|
||||||
|
Picking "Pro" on the website and deriving
|
||||||
|
`check-mk-pro-docker-2.3.0p9.tar.gz` from it yields an **HTTP 404** – that file
|
||||||
|
does not exist for 2.3.
|
||||||
|
|
||||||
|
The script takes care of this: it reads the real file name from the version
|
||||||
|
archive and additionally tries both naming variants. In the interface the
|
||||||
|
edition list shows both names.
|
||||||
|
|
||||||
> Freely downloadable does not mean licence-free – the licence key is entered
|
> Freely downloadable does not mean licence-free – the licence key is entered
|
||||||
> inside Checkmk afterwards.
|
> inside Checkmk afterwards.
|
||||||
|
|
||||||
@@ -758,10 +778,63 @@ In the ncurses interface the test can be reached from two places:
|
|||||||
After changing a credential field the menu also offers to run the test
|
After changing a credential field the menu also offers to run the test
|
||||||
straight away.
|
straight away.
|
||||||
|
|
||||||
### 8.5 Fetching the image – three ways
|
### 8.5 Listing the available versions
|
||||||
|
|
||||||
|
Instead of guessing version numbers:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/cmk-manage.sh image versions --edition enterprise --filter 2.3.0p
|
||||||
|
```
|
||||||
|
|
||||||
|
Up to three sources are queried:
|
||||||
|
|
||||||
|
| Source | `--source` | Credentials |
|
||||||
|
|---|---|---|
|
||||||
|
| version archive on checkmk.com | `web` | **no** |
|
||||||
|
| registry (Docker Hub or registry.checkmk.com) | `registry` | only for Enterprise |
|
||||||
|
| download portal (directory listing) | `download` | yes |
|
||||||
|
|
||||||
|
Without `--source` all three are tried – so even without stored credentials you
|
||||||
|
get a usable list:
|
||||||
|
|
||||||
|
```
|
||||||
|
Versionsarchiv https://checkmk.com/download/archive
|
||||||
|
(oeffentlich, keine Zugangsdaten noetig)
|
||||||
|
2.3.0p50
|
||||||
|
2.3.0p49
|
||||||
|
2.3.0p48
|
||||||
|
...
|
||||||
|
|
||||||
|
Uebernehmen
|
||||||
|
aus der Registry : ./scripts/cmk-manage.sh image pull --edition enterprise --version <version>
|
||||||
|
als Tarball : ./scripts/cmk-manage.sh image download --edition enterprise --version <version>
|
||||||
|
nur eintragen : ./scripts/cmk-manage.sh config set CMK_VERSION <version>
|
||||||
|
```
|
||||||
|
|
||||||
|
Further options: `--limit N` (default 25), `--all`, `--filter TEXT` and
|
||||||
|
`--bare` for the plain list without any framing – handy for scripting:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./scripts/cmk-manage.sh image versions --source web --filter 2.3.0p --bare | head -1
|
||||||
|
```
|
||||||
|
|
||||||
|
In the interface there is **image → "Verfügbare Versionen auflisten"**; and
|
||||||
|
when fetching an image the version no longer has to be typed at all – a
|
||||||
|
selection list appears instead.
|
||||||
|
|
||||||
|
### 8.6 Fetching the image – three ways
|
||||||
|
|
||||||
**a) From a registry (recommended)**
|
**a) From a registry (recommended)**
|
||||||
|
|
||||||
|
For the Enterprise edition this is exactly the following two steps – the script
|
||||||
|
performs them in one call and writes the result into `.env`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
podman login registry.checkmk.com # or docker login
|
||||||
|
podman pull registry.checkmk.com/enterprise/check-mk-enterprise:2.3.0p9
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# freely available, no login
|
# freely available, no login
|
||||||
sudo ./scripts/cmk-manage.sh image pull --edition raw --version 2.3.0-latest
|
sudo ./scripts/cmk-manage.sh image pull --edition raw --version 2.3.0-latest
|
||||||
@@ -809,7 +882,7 @@ typically `localhost/checkmk/check-mk-enterprise:2.3.0p23`) and writes it to
|
|||||||
sudo ./scripts/cmk-manage.sh up
|
sudo ./scripts/cmk-manage.sh up
|
||||||
```
|
```
|
||||||
|
|
||||||
### 8.6 Checking what is in effect
|
### 8.7 Checking what is in effect
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./scripts/cmk-manage.sh image status # configured image + local images
|
./scripts/cmk-manage.sh image status # configured image + local images
|
||||||
@@ -1378,7 +1451,7 @@ A file chooser with directory navigation is built in.
|
|||||||
| `job list\|add\|set\|del\|run\|auto` | scheduled backups (own target path per job) |
|
| `job list\|add\|set\|del\|run\|auto` | scheduled backups (own target path per job) |
|
||||||
| `restore …` | restore a backup |
|
| `restore …` | restore a backup |
|
||||||
| `import …` | import a migration bundle |
|
| `import …` | import a migration bundle |
|
||||||
| `image status\|list\|pull\|download\|load\|use` | obtain and select the Checkmk image |
|
| `image status\|list\|versions\|test\|pull\|download\|load\|use` | obtain and select the Checkmk image |
|
||||||
| `browser [--engine …]` | terminal browser in a container – operate the Proxy Manager locally |
|
| `browser [--engine …]` | terminal browser in a container – operate the Proxy Manager locally |
|
||||||
| `config list\|get\|set\|edit` | show and change settings in `.env` |
|
| `config list\|get\|set\|edit` | show and change settings in `.env` |
|
||||||
| `npm-port [PORT]` | set/show the port of the Proxy Manager interface |
|
| `npm-port [PORT]` | set/show the port of the Proxy Manager interface |
|
||||||
|
|||||||
+361
-20
@@ -107,6 +107,15 @@ KOMMANDOS - Backup / Restore / Migration
|
|||||||
KOMMANDOS - Checkmk-Image beschaffen
|
KOMMANDOS - Checkmk-Image beschaffen
|
||||||
image status konfiguriertes und lokal vorhandene Images anzeigen
|
image status konfiguriertes und lokal vorhandene Images anzeigen
|
||||||
image list lokal vorhandene Checkmk-Images
|
image list lokal vorhandene Checkmk-Images
|
||||||
|
image versions [Opt.] verfuegbare Versionen auflisten (zum Kopieren)
|
||||||
|
--edition E Edition (Vorgabe: CMK_EDITION)
|
||||||
|
--source registry|download|web|all Quelle (Vorgabe all)
|
||||||
|
web = oeffentliches Versionsarchiv von checkmk.com,
|
||||||
|
funktioniert ohne Zugangsdaten
|
||||||
|
--filter TEXT nur Versionen, die TEXT enthalten, z.B. 2.3.0
|
||||||
|
--limit N hoechstens N Eintraege (Vorgabe 25), --all fuer alle
|
||||||
|
--user U --password P statt der Werte aus der .env
|
||||||
|
--bare nur die nackte Liste, ohne Rahmen
|
||||||
image test [Opt.] Zugangsdaten pruefen, ohne etwas herunterzuladen
|
image test [Opt.] Zugangsdaten pruefen, ohne etwas herunterzuladen
|
||||||
--edition E Edition, deren Repository geprueft wird
|
--edition E Edition, deren Repository geprueft wird
|
||||||
--version V Version fuer die Pruefung des Downloadportals
|
--version V Version fuer die Pruefung des Downloadportals
|
||||||
@@ -457,6 +466,94 @@ image_fetch_url() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# Versionsarchiv von checkmk.com
|
||||||
|
#
|
||||||
|
# https://checkmk.com/download/archive ist serverseitig gerendert und
|
||||||
|
# braucht KEINE Zugangsdaten. Je Version steht dort
|
||||||
|
# data-handle="2.3.0p9" data-versions="{...}"
|
||||||
|
# und im JSON die echten Dateinamen je Edition. Daran haengt auch die
|
||||||
|
# Aufloesung der Verwirrung um die Editionsnamen: die Website benennt
|
||||||
|
# 2.3.0p9 als "pro", die Datei heisst weiterhin
|
||||||
|
# check-mk-enterprise-docker-2.3.0p9.tar.gz
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
ARCHIVE_CACHE=""
|
||||||
|
|
||||||
|
archive_fetch() { # Seite einmal je Aufruf holen, Pfad auf stdout
|
||||||
|
if [ -n "$ARCHIVE_CACHE" ] && [ -s "$ARCHIVE_CACHE" ]; then
|
||||||
|
printf '%s\n' "$ARCHIVE_CACHE"; return 0
|
||||||
|
fi
|
||||||
|
command -v curl >/dev/null 2>&1 || return 1
|
||||||
|
local f; f="$(mktemp)"
|
||||||
|
if curl -sS -L --max-time 60 "${CMK_ARCHIVE_URL:-https://checkmk.com/download/archive}" -o "$f" 2>/dev/null \
|
||||||
|
&& [ -s "$f" ]; then
|
||||||
|
ARCHIVE_CACHE="$f"; printf '%s\n' "$f"; return 0
|
||||||
|
fi
|
||||||
|
rm -f "$f"; return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
archive_versions() { # alle im Archiv gelisteten Versionen
|
||||||
|
local f; f="$(archive_fetch)" || return 1
|
||||||
|
grep -oE 'data-handle="[0-9]+\.[0-9]+\.[0-9]+[a-z0-9.]*"' "$f" \
|
||||||
|
| sed -E 's/data-handle="([^"]*)"/\1/' | sort -u
|
||||||
|
}
|
||||||
|
|
||||||
|
# Exakten Dateinamen des Docker-Tarballs ermitteln
|
||||||
|
archive_docker_file() { # edition version -> Dateiname auf stdout
|
||||||
|
local edition="$1" version="$2"
|
||||||
|
local f; f="$(archive_fetch)" || return 1
|
||||||
|
# Abschnitt dieser Version herausschneiden und die Docker-Dateinamen lesen
|
||||||
|
local names
|
||||||
|
names="$(grep -oE "data-handle=\"$version\"[^>]*" "$f" \
|
||||||
|
| grep -oE "check-mk-[a-z]+-docker-${version}\.tar\.gz" | sort -u)"
|
||||||
|
[ -n "$names" ] || return 1
|
||||||
|
local ed
|
||||||
|
for ed in $(edition_aliases "$edition"); do
|
||||||
|
if printf '%s\n' "$names" | grep -qx "check-mk-${ed}-docker-${version}.tar.gz"; then
|
||||||
|
printf 'check-mk-%s-docker-%s.tar.gz\n' "$ed" "$version"; return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Dateinamen der Image-Tarballs im Downloadportal.
|
||||||
|
# Bestaetigt am echten Server:
|
||||||
|
# .../checkmk/2.3.0p9/check-mk-raw-docker-2.3.0p9.tar.gz -> 200
|
||||||
|
# .../checkmk/2.3.0p9/check-mk-enterprise-docker-2.3.0p9.tar.gz -> 401 (geschuetzt)
|
||||||
|
# .../checkmk/2.3.0p9/check-mk-raw-2.3.0p9.docker.tar.gz -> 404
|
||||||
|
# Zusaetzlich die Editionsnamen ab 2.5 mitprobieren, damit derselbe
|
||||||
|
# Aufruf auch fuer neuere Versionen funktioniert.
|
||||||
|
edition_aliases() {
|
||||||
|
case "$1" in
|
||||||
|
enterprise) printf '%s\n' enterprise pro ;;
|
||||||
|
pro) printf '%s\n' pro enterprise ;;
|
||||||
|
raw) printf '%s\n' raw community ;;
|
||||||
|
community) printf '%s\n' community raw ;;
|
||||||
|
managed) printf '%s\n' managed ultimatemt ;;
|
||||||
|
ultimatemt) printf '%s\n' ultimatemt managed ;;
|
||||||
|
*) printf '%s\n' "$1" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
download_url_candidates() { # edition version -> URLs, beste zuerst
|
||||||
|
local edition="$1" version="$2" ed
|
||||||
|
local base="${CMK_DOWNLOAD_BASEURL:-https://download.checkmk.com/checkmk}"
|
||||||
|
# 1. Wahl: der im Archiv hinterlegte, echte Dateiname
|
||||||
|
local exact
|
||||||
|
if exact="$(archive_docker_file "$edition" "$version" 2>/dev/null)" && [ -n "$exact" ]; then
|
||||||
|
printf '%s/%s/%s
|
||||||
|
' "$base" "$version" "$exact"
|
||||||
|
fi
|
||||||
|
for ed in $(edition_aliases "$edition"); do
|
||||||
|
printf '%s/%s/check-mk-%s-docker-%s.tar.gz\n' "$base" "$version" "$ed" "$version"
|
||||||
|
done
|
||||||
|
# aelteres Schema, zur Sicherheit
|
||||||
|
for ed in $(edition_aliases "$edition"); do
|
||||||
|
printf '%s/%s/check-mk-%s-%s.docker.tar.gz\n' "$base" "$version" "$ed" "$version"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
# image pull - aus einer Registry holen
|
# image pull - aus einer Registry holen
|
||||||
# ---------------------------------------------------------------------
|
# ---------------------------------------------------------------------
|
||||||
@@ -564,11 +661,7 @@ image_cmd_download() {
|
|||||||
z.B. 2.3.0p23 - '$version' funktioniert dort nicht." ;;
|
z.B. 2.3.0p23 - '$version' funktioniert dort nicht." ;;
|
||||||
esac
|
esac
|
||||||
edition_known "$edition" || die "Unbekannte Edition '$edition'."
|
edition_known "$edition" || die "Unbekannte Edition '$edition'."
|
||||||
local base="${CMK_DOWNLOAD_BASEURL:-https://download.checkmk.com/checkmk}"
|
mapfile -t urls < <(download_url_candidates "$edition" "$version")
|
||||||
local pkg; pkg="$(edition_pkgname "$edition")"
|
|
||||||
# Checkmk hat den Dateinamen ueber die Jahre geaendert - beide probieren
|
|
||||||
urls=("$base/$version/$pkg-$version.docker.tar.gz"
|
|
||||||
"$base/$version/$pkg-docker-$version.tar.gz")
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local target="" u
|
local target="" u
|
||||||
@@ -866,13 +959,11 @@ test_download_login() { # baseurl edition version user pass
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
local netrc; netrc="$(netrc_make "$user" "$pass" "$host")"
|
local netrc; netrc="$(netrc_make "$user" "$pass" "$host")"
|
||||||
local pkg; pkg="$(edition_pkgname "$edition")"
|
|
||||||
local -a urls=()
|
local -a urls=()
|
||||||
if [ -n "${CMK_DOWNLOAD_URL:-}" ]; then
|
if [ -n "${CMK_DOWNLOAD_URL:-}" ]; then
|
||||||
urls=("$CMK_DOWNLOAD_URL")
|
urls=("$CMK_DOWNLOAD_URL")
|
||||||
elif [ -n "$version" ]; then
|
elif [ -n "$version" ]; then
|
||||||
urls=("$base/$version/$pkg-$version.docker.tar.gz"
|
mapfile -t urls < <(download_url_candidates "$edition" "$version")
|
||||||
"$base/$version/$pkg-docker-$version.tar.gz")
|
|
||||||
else
|
else
|
||||||
urls=("$base/")
|
urls=("$base/")
|
||||||
fi
|
fi
|
||||||
@@ -973,6 +1064,194 @@ image_cmd_test() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
# image versions - verfuegbare Versionen auflisten
|
||||||
|
#
|
||||||
|
# Registry : ueber den Docker-Registry-v2-Ablauf /v2/<repo>/tags/list
|
||||||
|
# Portal : ueber das Verzeichnis-Listing von download.checkmk.com
|
||||||
|
# (nur mit Zugangsdaten lesbar)
|
||||||
|
# ---------------------------------------------------------------------
|
||||||
|
|
||||||
|
# Token fuer eine Registry besorgen ("" = anonym versuchen)
|
||||||
|
registry_get_token() { # api repo user pass -> Token auf stdout
|
||||||
|
local api="$1" repo="$2" user="$3" pass="$4"
|
||||||
|
local hdrf; hdrf="$(mktemp)"
|
||||||
|
curl -sS -o /dev/null -D "$hdrf" --max-time 30 "https://$api/v2/" >/dev/null 2>&1 || true
|
||||||
|
local wa realm service
|
||||||
|
wa="$(tr -d '\r' <"$hdrf" | grep -i '^www-authenticate:' | head -n1)"
|
||||||
|
rm -f "$hdrf"
|
||||||
|
case "$wa" in
|
||||||
|
*[Bb]earer*) : ;;
|
||||||
|
*) return 0 ;; # Basic oder offen - kein Token noetig
|
||||||
|
esac
|
||||||
|
realm="$(printf '%s' "$wa" | sed -n 's/.*realm="\([^"]*\)".*/\1/p')"
|
||||||
|
service="$(printf '%s' "$wa" | sed -n 's/.*service="\([^"]*\)".*/\1/p')"
|
||||||
|
[ -n "$realm" ] || return 0
|
||||||
|
local realm_host; realm_host="$(printf '%s' "$realm" | sed -E 's|^[a-z]+://([^/]+).*|\1|')"
|
||||||
|
local url="$realm?service=$service&scope=repository:$repo:pull"
|
||||||
|
local body netrc=""
|
||||||
|
if [ -n "$user" ]; then
|
||||||
|
netrc="$(netrc_make "$user" "$pass" "$api" "$realm_host")"
|
||||||
|
body="$(curl -sS --netrc-file "$netrc" --max-time 30 "$url" 2>/dev/null || true)"
|
||||||
|
rm -f "$netrc"
|
||||||
|
else
|
||||||
|
body="$(curl -sS --max-time 30 "$url" 2>/dev/null || true)"
|
||||||
|
fi
|
||||||
|
local t
|
||||||
|
t="$(printf '%s' "$body" | sed -n 's/.*"token"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')"
|
||||||
|
[ -n "$t" ] || t="$(printf '%s' "$body" | sed -n 's/.*"access_token"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/p')"
|
||||||
|
printf '%s' "$t"
|
||||||
|
}
|
||||||
|
|
||||||
|
registry_tags() { # api repo user pass -> Tags, eine je Zeile
|
||||||
|
local api="$1" repo="$2" user="$3" pass="$4"
|
||||||
|
local token; token="$(registry_get_token "$api" "$repo" "$user" "$pass")"
|
||||||
|
local -a a=(-sS --max-time 45)
|
||||||
|
if [ -n "$token" ]; then
|
||||||
|
a+=(-H "Authorization: Bearer $token")
|
||||||
|
elif [ -n "$user" ]; then
|
||||||
|
local netrc; netrc="$(netrc_make "$user" "$pass" "$api")"
|
||||||
|
a+=(--netrc-file "$netrc")
|
||||||
|
fi
|
||||||
|
local body
|
||||||
|
body="$(curl "${a[@]}" "https://$api/v2/$repo/tags/list" 2>/dev/null || true)"
|
||||||
|
printf '%s' "$body" \
|
||||||
|
| tr ',' '\n' \
|
||||||
|
| sed -n 's/.*"tags"[[:space:]]*:[[:space:]]*\[[[:space:]]*"\([^"]*\)".*/\1/p;s/^[[:space:]]*"\([^"]*\)".*/\1/p' \
|
||||||
|
| sed 's/[]["]//g' | sed '/^$/d'
|
||||||
|
}
|
||||||
|
|
||||||
|
download_versions() { # user pass -> Versionsverzeichnisse
|
||||||
|
local user="$1" pass="$2"
|
||||||
|
local base="${CMK_DOWNLOAD_BASEURL:-https://download.checkmk.com/checkmk}"
|
||||||
|
local host; host="$(printf '%s' "$base" | sed -E 's|^[a-z]+://([^/]+).*|\1|')"
|
||||||
|
local -a a=(-sS --max-time 45 -L)
|
||||||
|
local netrc=""
|
||||||
|
if [ -n "$user" ]; then
|
||||||
|
netrc="$(netrc_make "$user" "$pass" "$host")"; a+=(--netrc-file "$netrc")
|
||||||
|
fi
|
||||||
|
local body; body="$(curl "${a[@]}" "$base/" 2>/dev/null || true)"
|
||||||
|
[ -n "$netrc" ] && rm -f "$netrc"
|
||||||
|
printf '%s' "$body" \
|
||||||
|
| grep -oE 'href="[0-9]+\.[0-9]+\.[0-9]+[a-z0-9.]*/?"' \
|
||||||
|
| sed -E 's|href="([^"/]+)/?"|\1|' | sort -u
|
||||||
|
}
|
||||||
|
|
||||||
|
image_cmd_versions() {
|
||||||
|
local edition="${CMK_EDITION:-raw}" source="all" filter="" limit=25
|
||||||
|
local ruser="${CMK_REGISTRY_USER:-}" rpass="${CMK_REGISTRY_PASSWORD:-}"
|
||||||
|
local duser="${CMK_DOWNLOAD_USER:-}" dpass="${CMK_DOWNLOAD_PASSWORD:-}"
|
||||||
|
local reg="${CMK_REGISTRY:-registry.checkmk.com}" raw=""
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
--edition) edition="$2"; shift 2 ;;
|
||||||
|
--source) source="$2"; shift 2 ;;
|
||||||
|
--filter) filter="$2"; shift 2 ;;
|
||||||
|
--limit) limit="$2"; shift 2 ;;
|
||||||
|
--all) limit=100000; shift ;;
|
||||||
|
--registry) reg="$2"; shift 2 ;;
|
||||||
|
--user) ruser="$2"; duser="$2"; shift 2 ;;
|
||||||
|
--password) rpass="$2"; dpass="$2"; shift 2 ;;
|
||||||
|
--bare) raw=1; shift ;;
|
||||||
|
*) die "Unbekannte Option fuer 'image versions': $1" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
edition_known "$edition" || die "Unbekannte Edition '$edition'.
|
||||||
|
Moeglich: raw community free cloud managed pro ultimate ultimatemt enterprise"
|
||||||
|
case "$source" in registry|download|web|both|all) : ;;
|
||||||
|
*) die "--source: registry | download | web | all" ;; esac
|
||||||
|
[ "$source" = both ] && source=all
|
||||||
|
case "$limit" in ''|*[!0-9]*) die "--limit braucht eine Zahl." ;; esac
|
||||||
|
|
||||||
|
command -v curl >/dev/null 2>&1 || die "Fuer 'image versions' wird curl benoetigt."
|
||||||
|
|
||||||
|
CMK_REGISTRY="$reg"
|
||||||
|
local full repo api
|
||||||
|
full="$(edition_repo "$edition")"
|
||||||
|
repo="${full#*/}"
|
||||||
|
api="$(registry_api_host "${full%%/*}")"
|
||||||
|
|
||||||
|
local found=0
|
||||||
|
|
||||||
|
if [ "$source" = web ] || [ "$source" = all ]; then
|
||||||
|
[ -n "$raw" ] || printf '\n%sVersionsarchiv %s%s\n' "$C_BLD" \
|
||||||
|
"${CMK_ARCHIVE_URL:-https://checkmk.com/download/archive}" "$C_RST"
|
||||||
|
[ -n "$raw" ] || printf ' %s(oeffentlich, keine Zugangsdaten noetig)%s\n' "$C_BLU" "$C_RST"
|
||||||
|
local -a wv=()
|
||||||
|
mapfile -t wv < <(archive_versions 2>/dev/null \
|
||||||
|
| { [ -n "$filter" ] && grep -F "$filter" || cat; } \
|
||||||
|
| sort -rV | head -n "$limit")
|
||||||
|
if [ ${#wv[@]} -eq 0 ]; then
|
||||||
|
[ -n "$raw" ] || test_result warn "Archiv nicht lesbar" "Netzzugang zu checkmk.com pruefen"
|
||||||
|
else
|
||||||
|
found=1
|
||||||
|
printf '%s\n' "${wv[@]}" | { [ -n "$raw" ] && cat || sed 's/^/ /'; }
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$source" = registry ] || [ "$source" = all ]; then
|
||||||
|
[ -n "$raw" ] || printf '\n%sRegistry %s%s\n' "$C_BLD" "$full" "$C_RST"
|
||||||
|
local -a tags=()
|
||||||
|
mapfile -t tags < <(registry_tags "$api" "$repo" "$ruser" "$rpass" \
|
||||||
|
| { [ -n "$filter" ] && grep -F "$filter" || cat; } \
|
||||||
|
| sort -rV | head -n "$limit")
|
||||||
|
if [ ${#tags[@]} -eq 0 ]; then
|
||||||
|
if [ -z "$raw" ]; then
|
||||||
|
if edition_needs_login "$edition" && [ -z "$ruser" ]; then
|
||||||
|
test_result warn "keine Zugangsdaten - Registry nicht lesbar" \
|
||||||
|
"CMK_REGISTRY_USER/-PASSWORD setzen oder --user/--password angeben"
|
||||||
|
else
|
||||||
|
test_result warn "keine Tags erhalten" "Zugangsdaten und Repository pruefen"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
found=1
|
||||||
|
printf '%s\n' "${tags[@]}" | { [ -n "$raw" ] && cat || sed 's/^/ /'; }
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$source" = download ] || [ "$source" = all ]; then
|
||||||
|
[ -n "$raw" ] || printf '\n%sDownloadportal %s%s\n' "$C_BLD" \
|
||||||
|
"${CMK_DOWNLOAD_BASEURL:-https://download.checkmk.com/checkmk}" "$C_RST"
|
||||||
|
local -a vers=()
|
||||||
|
mapfile -t vers < <(download_versions "$duser" "$dpass" \
|
||||||
|
| { [ -n "$filter" ] && grep -F "$filter" || cat; } \
|
||||||
|
| sort -rV | head -n "$limit")
|
||||||
|
if [ ${#vers[@]} -eq 0 ]; then
|
||||||
|
if [ -z "$raw" ]; then
|
||||||
|
if [ -z "$duser" ]; then
|
||||||
|
test_result warn "keine Zugangsdaten - das Verzeichnis ist geschuetzt (HTTP 401)" \
|
||||||
|
"CMK_DOWNLOAD_USER/-PASSWORD setzen oder --user/--password angeben"
|
||||||
|
else
|
||||||
|
test_result warn "keine Versionen gelesen" \
|
||||||
|
"Zugangsdaten pruefen: $SELF image test --only download"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
found=1
|
||||||
|
printf '%s\n' "${vers[@]}" | { [ -n "$raw" ] && cat || sed 's/^/ /'; }
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -n "$raw" ] && return 0
|
||||||
|
echo
|
||||||
|
if [ "$found" = 1 ]; then
|
||||||
|
cat <<EOF
|
||||||
|
${C_BLD}Uebernehmen${C_RST}
|
||||||
|
aus der Registry : $SELF image pull --edition $edition --version <version>
|
||||||
|
als Tarball : $SELF image download --edition $edition --version <version>
|
||||||
|
nur eintragen : $SELF config set CMK_VERSION <version>
|
||||||
|
|
||||||
|
Nur die nackte Liste (zum Weiterverarbeiten): $SELF image versions --bare
|
||||||
|
EOF
|
||||||
|
else
|
||||||
|
err "Es konnte keine Versionsliste gelesen werden."
|
||||||
|
log "Zugangsdaten pruefen mit: $SELF image test"
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
[ "$found" = 1 ]
|
||||||
|
}
|
||||||
|
|
||||||
cmd_image() {
|
cmd_image() {
|
||||||
local sub="${1:-status}"; [ $# -gt 0 ] && shift || true
|
local sub="${1:-status}"; [ $# -gt 0 ] && shift || true
|
||||||
case "$sub" in
|
case "$sub" in
|
||||||
@@ -983,8 +1262,9 @@ cmd_image() {
|
|||||||
load) image_cmd_load "$@" ;;
|
load) image_cmd_load "$@" ;;
|
||||||
use|set) image_cmd_use "$@" ;;
|
use|set) image_cmd_use "$@" ;;
|
||||||
test|check) image_cmd_test "$@" ;;
|
test|check) image_cmd_test "$@" ;;
|
||||||
|
versions|tags) image_cmd_versions "$@" ;;
|
||||||
*) die "Unbekanntes Unterkommando 'image $sub'.
|
*) die "Unbekanntes Unterkommando 'image $sub'.
|
||||||
Moeglich: status | list | test | pull | download | load | use" ;;
|
Moeglich: status | list | versions | test | pull | download | load | use" ;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3043,6 +3323,7 @@ gui_image_menu() {
|
|||||||
"Aktuell (.env): ${CMK_IMAGE:-<nicht gesetzt>}
|
"Aktuell (.env): ${CMK_IMAGE:-<nicht gesetzt>}
|
||||||
Edition/Version: ${CMK_EDITION:-raw} / ${CMK_VERSION:-?}" \
|
Edition/Version: ${CMK_EDITION:-raw} / ${CMK_VERSION:-?}" \
|
||||||
status "Status und lokale Images anzeigen" \
|
status "Status und lokale Images anzeigen" \
|
||||||
|
versions "Verfuegbare Versionen auflisten" \
|
||||||
test "Zugangsdaten pruefen (Registry und Downloadportal)" \
|
test "Zugangsdaten pruefen (Registry und Downloadportal)" \
|
||||||
pull "Aus Registry holen (Docker Hub / registry.checkmk.com)" \
|
pull "Aus Registry holen (Docker Hub / registry.checkmk.com)" \
|
||||||
download "Tarball vom Downloadportal holen (mit Zugangsdaten)" \
|
download "Tarball vom Downloadportal holen (mit Zugangsdaten)" \
|
||||||
@@ -3052,6 +3333,7 @@ Edition/Version: ${CMK_EDITION:-raw} / ${CMK_VERSION:-?}" \
|
|||||||
case "$sel" in
|
case "$sel" in
|
||||||
status) local f; f="$(mktemp)"; NO_COLOR=1 cmd_image status >"$f" 2>&1 || true
|
status) local f; f="$(mktemp)"; NO_COLOR=1 cmd_image status >"$f" 2>&1 || true
|
||||||
ui_text "Image-Status" "$f"; rm -f "$f" ;;
|
ui_text "Image-Status" "$f"; rm -f "$f" ;;
|
||||||
|
versions) gui_image_versions || true ;;
|
||||||
test) gui_image_test || true ;;
|
test) gui_image_test || true ;;
|
||||||
pull) gui_image_pull || true ;;
|
pull) gui_image_pull || true ;;
|
||||||
download) gui_image_download || true ;;
|
download) gui_image_download || true ;;
|
||||||
@@ -3066,15 +3348,69 @@ Edition/Version: ${CMK_EDITION:-raw} / ${CMK_VERSION:-?}" \
|
|||||||
}
|
}
|
||||||
|
|
||||||
gui_image_pick_edition() {
|
gui_image_pick_edition() {
|
||||||
ui_menu "Edition" "Welche Checkmk-Edition?" \
|
# Checkmk hat die Editionen umbenannt: die Website zeigt die neuen
|
||||||
raw "Raw (frei, Docker Hub, bis 2.4)" \
|
# Namen, Dateien und Repositories tragen bis 2.4 die alten. Deshalb
|
||||||
community "Community (frei, Docker Hub, ab 2.5)" \
|
# hier beide, damit die Zuordnung eindeutig ist.
|
||||||
enterprise "Enterprise (NICHT auf Docker Hub - Login noetig)" \
|
ui_menu "Edition" \
|
||||||
pro "Pro (ab 2.5, Nachfolger von Enterprise)" \
|
"Links der Name, den dieses Werkzeug verwendet,
|
||||||
cloud "Cloud (Docker Hub)" \
|
rechts der Name auf checkmk.com." \
|
||||||
managed "Managed (Docker Hub, bis 2.4)" \
|
raw "= Community auf der Website (frei, bis 2.4)" \
|
||||||
ultimate "Ultimate (ab 2.5)" \
|
community "= Community (frei, ab 2.5)" \
|
||||||
ultimatemt "Ultimate Multi-Tenancy (ab 2.5)"
|
enterprise "= Pro auf der Website (Login noetig, bis 2.4)" \
|
||||||
|
pro "= Pro (ab 2.5)" \
|
||||||
|
cloud "= Ultimate auf der Website (bis 2.4)" \
|
||||||
|
ultimate "= Ultimate (ab 2.5)" \
|
||||||
|
managed "= Ultimate MT auf der Website (bis 2.4)" \
|
||||||
|
ultimatemt "= Ultimate MT (ab 2.5)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Version aus dem oeffentlichen Archiv auswaehlen, statt sie abzutippen
|
||||||
|
gui_image_pick_version() { # edition [vorgabe] -> Version auf stdout
|
||||||
|
local edition="$1" cur="${2:-}"
|
||||||
|
local filt
|
||||||
|
filt="$(ui_input "Versionen filtern" \
|
||||||
|
"Nach welchem Zweig suchen? (leer = alle)
|
||||||
|
|
||||||
|
Beispiele: 2.3.0p nur Patch-Staende von 2.3.0
|
||||||
|
2.4 alles aus 2.4" "${cur%%p*}")" || return 1
|
||||||
|
|
||||||
|
local -a items=() v
|
||||||
|
while IFS= read -r v; do
|
||||||
|
[ -n "$v" ] || continue
|
||||||
|
items+=("$v" " ")
|
||||||
|
done < <(archive_versions 2>/dev/null \
|
||||||
|
| { [ -n "$filt" ] && grep -F "$filt" || cat; } | sort -rV | head -n 40)
|
||||||
|
|
||||||
|
if [ ${#items[@]} -eq 0 ]; then
|
||||||
|
ui_msg "Keine Versionen" \
|
||||||
|
"Aus dem Versionsarchiv von checkmk.com konnte nichts gelesen werden.
|
||||||
|
|
||||||
|
Entweder passt der Filter nicht, oder der Host hat keinen
|
||||||
|
Zugang zu checkmk.com. Die Version laesst sich im naechsten
|
||||||
|
Schritt auch von Hand eingeben."
|
||||||
|
ui_input "Version" "Version von Hand eingeben:" "$cur"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
items+=("__manuell__" "... von Hand eingeben ...")
|
||||||
|
local sel
|
||||||
|
sel="$(ui_menu "Version waehlen" \
|
||||||
|
"Edition: $edition
|
||||||
|
Quelle: oeffentliches Versionsarchiv von checkmk.com" "${items[@]}")" || return 1
|
||||||
|
if [ "$sel" = "__manuell__" ]; then
|
||||||
|
ui_input "Version" "Version von Hand eingeben:" "$cur"
|
||||||
|
else
|
||||||
|
printf '%s\n' "$sel"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
gui_image_versions() {
|
||||||
|
local ed
|
||||||
|
ed="$(gui_image_pick_edition)" || return 0
|
||||||
|
local f; f="$(mktemp)"
|
||||||
|
ui_info "Versionen abrufen" "Frage Versionsarchiv, Registry und Downloadportal ab ...\n\nDas kann einen Moment dauern."
|
||||||
|
NO_COLOR=1 cmd_image versions --edition "$ed" --limit 30 >"$f" 2>&1 || true
|
||||||
|
ui_text "Verfuegbare Versionen - $ed" "$f"
|
||||||
|
rm -f "$f"
|
||||||
}
|
}
|
||||||
|
|
||||||
gui_image_test() {
|
gui_image_test() {
|
||||||
@@ -3096,7 +3432,7 @@ gui_image_test() {
|
|||||||
gui_image_pull() {
|
gui_image_pull() {
|
||||||
local ed ver user pass
|
local ed ver user pass
|
||||||
ed="$(gui_image_pick_edition)" || return 0
|
ed="$(gui_image_pick_edition)" || return 0
|
||||||
ver="$(ui_input "Version" "Version bzw. Tag (z.B. 2.3.0p23 oder 2.3.0-latest):" "${CMK_VERSION:-}")" || return 0
|
ver="$(gui_image_pick_version "$ed" "${CMK_VERSION:-}")" || return 0
|
||||||
[ -n "$ver" ] || return 0
|
[ -n "$ver" ] || return 0
|
||||||
local -a extra=()
|
local -a extra=()
|
||||||
if [ "$ed" = enterprise ] || [ -n "${CMK_REGISTRY_USER:-}" ]; then
|
if [ "$ed" = enterprise ] || [ -n "${CMK_REGISTRY_USER:-}" ]; then
|
||||||
@@ -3111,8 +3447,13 @@ gui_image_pull() {
|
|||||||
gui_image_download() {
|
gui_image_download() {
|
||||||
local ed ver user pass
|
local ed ver user pass
|
||||||
ed="$(gui_image_pick_edition)" || return 0
|
ed="$(gui_image_pick_edition)" || return 0
|
||||||
ver="$(ui_input "Version" "EXAKTE Version (z.B. 2.3.0p23 - kein '-latest'):" "${CMK_VERSION:-}")" || return 0
|
ver="$(gui_image_pick_version "$ed" "${CMK_VERSION:-}")" || return 0
|
||||||
[ -n "$ver" ] || return 0
|
[ -n "$ver" ] || return 0
|
||||||
|
case "$ver" in
|
||||||
|
*-latest|latest|*-daily)
|
||||||
|
ui_msg "Nicht moeglich" "Fuer den Tarball-Download wird eine exakte Version gebraucht,\nz.B. 2.3.0p23 - '$ver' gibt es dort nicht."
|
||||||
|
return 0 ;;
|
||||||
|
esac
|
||||||
user="$(ui_input "Downloadportal" "Benutzer:" "${CMK_DOWNLOAD_USER:-}")" || return 0
|
user="$(ui_input "Downloadportal" "Benutzer:" "${CMK_DOWNLOAD_USER:-}")" || return 0
|
||||||
pass="$(ui_password "Downloadportal" "Kennwort:")" || return 0
|
pass="$(ui_password "Downloadportal" "Kennwort:")" || return 0
|
||||||
ui_run "Image herunterladen" bash -c "cd '$PROJECT_DIR' && '$SELF' -y image download --edition '$ed' --version '$ver' --user '$user' --password '$pass'"
|
ui_run "Image herunterladen" bash -c "cd '$PROJECT_DIR' && '$SELF' -y image download --edition '$ed' --version '$ver' --user '$user' --password '$pass'"
|
||||||
|
|||||||
Reference in New Issue
Block a user