From 861470da55d4e0385a2dd6992c7ab1f1c4a23ec8 Mon Sep 17 00:00:00 2001 From: gitea-actions Date: Sat, 22 Aug 2026 21:21:09 +0200 Subject: [PATCH] =?UTF-8?q?=C5=A0ablonu=20vyb=C3=ADrat=20podle=20architekt?= =?UTF-8?q?ury=20uzlu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pveam nabízí amd64 i arm64 vedle sebe a výběr přes `sort -V | tail -1` padl na tu abecedně poslední — tedy arm64 i na x86 uzlu. Šablona, která na uzlu už ležela, se pak nenašla a skript začal stahovat 120 MB nepoužitelného archivu. Architektura se teď bere z dpkg --print-architecture a nejdřív se kouká, co na uzlu už je; stahuje se, až když tam nic nesedí. Neúspěšné stažení navíc skript zastaví, místo aby se šlo zakládat kontejner ze šablony, která není. Ke stejné příležitosti Ctrl+C: bez trapu zabil jen rozdělaný podproces a skript pokračoval dál — v hlášení od uživatele je vidět, jak po přerušeném stahování vesele oznámil hotovou šablonu a pustil se do pct create. --- deploy/pve-kostky.sh | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/deploy/pve-kostky.sh b/deploy/pve-kostky.sh index def1f58..8572cf1 100755 --- a/deploy/pve-kostky.sh +++ b/deploy/pve-kostky.sh @@ -40,6 +40,10 @@ VERSION="${VERSION:-}" # prázdné = poslední vydání # --- výpisy ------------------------------------------------------------------ +# Bez tohohle Ctrl+C zabije jen rozdělaný podproces a skript jede vesele dál +# — třeba rovnou zakládat kontejner, na který se čekat nemá. +trap 'echo; echo -e "\e[1;31m ✗\e[0m Přerušeno." >&2; exit 130' INT TERM + msg() { echo -e "\e[1;34m →\e[0m $*"; } ok() { echo -e "\e[1;32m ✓\e[0m $*"; } die() { echo -e "\e[1;31m ✗\e[0m $*" >&2; exit 1; } @@ -215,7 +219,7 @@ hotovo() { echo -e " \e[2mDatabáze: /var/lib/kostky/dice.db (uvnitř kontejneru)" echo -e " Log: pct exec $ctid -- journalctl -u kostky -f" echo -e " Konzole: pct enter $ctid" - echo -e " Zrušit: pct stop $ctid \&\& pct destroy $ctid\e[0m" + echo -e " Zrušit: pct stop $ctid && pct destroy $ctid\e[0m" echo } @@ -272,17 +276,28 @@ fi CTID="${CTID:-$(pvesh get /cluster/nextid)}" msg "Kontejner dostane číslo $CTID" -msg "Hledám šablonu Debianu $OSVERSION" -pveam update >/dev/null 2>&1 || true -TEMPLATE=$(pveam available --section system \ - | awk '{print $2}' | grep "^debian-${OSVERSION}-standard" | sort -V | tail -1) -[ -n "$TEMPLATE" ] || die "Šablona pro Debian $OSVERSION není k dispozici." +# Architektura uzlu, ne první šablona v seznamu. pveam nabízí amd64 i arm64 +# vedle sebe a bez tohohle filtru by výběr padl na tu abecedně poslední. +ARCH=$(dpkg --print-architecture) +SABLONA="debian-${OSVERSION}-standard[^[:space:]]*_${ARCH}\.tar\.[a-z]*" + +msg "Hledám šablonu Debianu $OSVERSION pro $ARCH" + +# Nejdřív co už na uzlu leží — stahovat 120 MB znovu je zbytečné. +TEMPLATE=$(pveam list "$TEMPLATE_STORAGE" 2>/dev/null | grep -o "$SABLONA" | sort -V | tail -1) + +if [ -n "$TEMPLATE" ]; then + ok "Šablona $TEMPLATE (už je na uzlu)" +else + pveam update >/dev/null 2>&1 || true + TEMPLATE=$(pveam available --section system 2>/dev/null | grep -o "$SABLONA" | sort -V | tail -1) + [ -n "$TEMPLATE" ] || die "Šablona pro Debian $OSVERSION a $ARCH není k dispozici." -if ! pveam list "$TEMPLATE_STORAGE" 2>/dev/null | grep -q "$TEMPLATE"; then msg "Stahuji $TEMPLATE (asi 120 MB, chvíli to trvá)" - pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null + pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null \ + || die "Stažení šablony selhalo." + ok "Šablona $TEMPLATE" fi -ok "Šablona $TEMPLATE" msg "Zakládám kontejner" pct create "$CTID" "$TEMPLATE_STORAGE:vztmpl/$TEMPLATE" \