Šablonu vybírat podle architektury uzlu
binárka / linux (pull_request) Successful in 10s
testy / pytest (3.11) (pull_request) Successful in 1s
testy / pytest (3.12) (pull_request) Successful in 1s
testy / pytest (3.13) (pull_request) Successful in 1s
testy / pytest (3.14) (pull_request) Successful in 2s
binárka / linux (pull_request) Successful in 10s
testy / pytest (3.11) (pull_request) Successful in 1s
testy / pytest (3.12) (pull_request) Successful in 1s
testy / pytest (3.13) (pull_request) Successful in 1s
testy / pytest (3.14) (pull_request) Successful in 2s
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.
This commit is contained in:
1 parent
746916a755
commit
861470da55
1 file changed
+24
-9
+24
-9
@@ -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
|
||||
fi
|
||||
pveam download "$TEMPLATE_STORAGE" "$TEMPLATE" >/dev/null \
|
||||
|| die "Stažení šablony selhalo."
|
||||
ok "Šablona $TEMPLATE"
|
||||
fi
|
||||
|
||||
msg "Zakládám kontejner"
|
||||
pct create "$CTID" "$TEMPLATE_STORAGE:vztmpl/$TEMPLATE" \
|
||||
|
||||
Reference in new issue
Block a user