update.sh: auch /srv/poe_manager + poe_web.service (Vorgänger-Flask-App) abschalten
Ergänzt die bereits behandelte ursprüngliche Bash-only-Generation (WiS/Aruba-PoE: rpi-check.service + ips.list) um die dazwischenliegende Generation -- die Flask-App "PoE Manager" unter /srv/poe_manager mit poe_web.service, der Vorgänger von TESM in diesem Repo vor der Umbenennung. update.sh erkennt und sichert jetzt beide möglichen alten Installationsorte (/srv/tesm, /srv/poe_manager) unabhängig voneinander nach <Verzeichnis>-backup-<Zeitstempel> und stoppt/deaktiviert alle drei möglichen Dienst-Generationen. README entsprechend erweitert.
This commit is contained in:
@@ -1132,14 +1132,23 @@ sudo TESM_RELEASE_TAG=v1.0.0 ./update.sh
|
|||||||
sudo TESM_GITEA_USER=alientim TESM_GITEA_TOKEN=<token> ./update.sh
|
sudo TESM_GITEA_USER=alientim TESM_GITEA_TOKEN=<token> ./update.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Das Skript stoppt und deaktiviert zunächst alle laufenden Dienste — sowohl
|
Das Skript erkennt und ersetzt dabei jede der drei historischen Ausbaustufen
|
||||||
die aktuellen (`tesm.service`, `tesm-check.service`,
|
dieses Hosts, egal welche gerade aktiv ist:
|
||||||
`tesm-check-restart.timer`) als auch, falls noch vorhanden, das
|
|
||||||
ursprüngliche Bash-only-Setup (`rpi-check.service`,
|
1. das ursprüngliche, reine Bash-Setup aus dem separaten Repo
|
||||||
`rpi-check-restart.service`, `rpi-check-restart.timer`) —, verschiebt ein
|
[WiS/Aruba-PoE](https://gitea.int.eertmoed.net/WiS/Aruba-PoE)
|
||||||
bestehendes `/srv/tesm` **ohne es zu löschen** nach
|
(`rpi-check.service`/`rpi-check-restart.*`, statische `ips.list`, keine
|
||||||
`/srv/tesm-backup-<Zeitstempel>` (bleibt inkl. `sqlite.db` als Rückfall-
|
Datenbank/Web-UI),
|
||||||
option und Datenquelle erhalten), lädt dann das Release-Paket
|
2. die spätere Flask-App „PoE Manager" unter `/srv/poe_manager`
|
||||||
|
(`poe_web.service`, der Vorgänger von TESM in diesem Repo vor der
|
||||||
|
Umbenennung),
|
||||||
|
3. eine bereits während der Entwicklung ad-hoc gepflegte TESM-Instanz unter
|
||||||
|
`/srv/tesm`.
|
||||||
|
|
||||||
|
Es stoppt/deaktiviert alle davon vorhandenen Dienste, verschiebt jedes
|
||||||
|
vorhandene `/srv/tesm` bzw. `/srv/poe_manager` **ohne es zu löschen** nach
|
||||||
|
`<Verzeichnis>-backup-<Zeitstempel>` (bleibt inkl. `sqlite.db` als
|
||||||
|
Rückfalloption und Datenquelle erhalten), lädt dann das Release-Paket
|
||||||
(`tesm-<tag>.tar.gz`, standardmäßig `latest`) von den Gitea-Releases dieses
|
(`tesm-<tag>.tar.gz`, standardmäßig `latest`) von den Gitea-Releases dieses
|
||||||
Repos herunter und führt darin `install.sh` aus.
|
Repos herunter und führt darin `install.sh` aus.
|
||||||
|
|
||||||
|
|||||||
@@ -1,16 +1,24 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# ============================================================================
|
# ============================================================================
|
||||||
# TESM — Update/Reinstall
|
# TESM — Update/Reinstall
|
||||||
# Ersetzt eine bestehende Installation -- egal ob eine während der
|
# Ersetzt eine bestehende Installation -- ganz gleich welche der drei
|
||||||
# Entwicklung ad-hoc gepflegte TESM-Instanz ODER das ursprüngliche, viel
|
# historischen Stufen dieses Hosts gerade aktiv ist:
|
||||||
# ältere reine Bash-Setup ("aruba-poe": rpi-check.service + statische
|
# 1. Das ursprüngliche, reine Bash-Setup aus dem separaten Repo
|
||||||
# ips.list, keine Datenbank/Web-UI) -- durch eine frische Installation aus
|
# https://gitea.int.eertmoed.net/WiS/Aruba-PoE (rpi-check.service +
|
||||||
# einem gepackten Gitea-Release. Lädt dafür NUR den Release-Tarball per HTTP
|
# statische ips.list, keine Datenbank/Web-UI).
|
||||||
# herunter (kein "git clone", kein Git auf dem Zielsystem nötig).
|
# 2. Die spätere Flask-App "PoE Manager" unter /srv/poe_manager
|
||||||
|
# (poe_web.service, Vorgänger von TESM in diesem Repo vor der
|
||||||
|
# Umbenennung).
|
||||||
|
# 3. Eine bereits während der Entwicklung ad-hoc gepflegte TESM-Instanz
|
||||||
|
# unter /srv/tesm.
|
||||||
|
# -- durch eine frische Installation aus einem gepackten Gitea-Release.
|
||||||
|
# Lädt dafür NUR den Release-Tarball per HTTP herunter (kein "git clone",
|
||||||
|
# kein Git auf dem Zielsystem nötig).
|
||||||
#
|
#
|
||||||
# Die ALTE Installation wird dabei NICHT gelöscht, sondern nur gestoppt/
|
# Alle ALTEN Installationen werden dabei NICHT gelöscht, sondern nur
|
||||||
# deaktiviert und (falls vorhanden) beiseite verschoben (siehe BACKUP_DIR) --
|
# gestoppt/deaktiviert und (falls vorhanden) beiseite verschoben (siehe
|
||||||
# als Rückfalloption UND als Datenquelle für einen späteren Export/Import.
|
# OLD_DIRS/BACKED_UP_DIRS) -- als Rückfalloption UND als Datenquelle für
|
||||||
|
# einen späteren Export/Import.
|
||||||
#
|
#
|
||||||
# WICHTIG: Das Ergebnis ist eine FRISCHE Installation OHNE die Daten der
|
# WICHTIG: Das Ergebnis ist eine FRISCHE Installation OHNE die Daten der
|
||||||
# alten Instanz (Geräte, Switche, Zugangsdaten, Benutzer, Einstellungen, …).
|
# alten Instanz (Geräte, Switche, Zugangsdaten, Benutzer, Einstellungen, …).
|
||||||
@@ -36,8 +44,11 @@ GITEA_TOKEN="${TESM_GITEA_TOKEN:-}"
|
|||||||
PACKAGE_NAME="tesm-${RELEASE_TAG}.tar.gz"
|
PACKAGE_NAME="tesm-${RELEASE_TAG}.tar.gz"
|
||||||
DOWNLOAD_URL="${GITEA_BASE}/${REPO_OWNER}/${REPO_NAME}/releases/download/${RELEASE_TAG}/${PACKAGE_NAME}"
|
DOWNLOAD_URL="${GITEA_BASE}/${REPO_OWNER}/${REPO_NAME}/releases/download/${RELEASE_TAG}/${PACKAGE_NAME}"
|
||||||
|
|
||||||
INSTALL_DIR="/srv/tesm"
|
TIMESTAMP="$(date +%Y%m%d-%H%M%S)"
|
||||||
BACKUP_DIR="/srv/tesm-backup-$(date +%Y%m%d-%H%M%S)"
|
# Alle historischen Installationsorte, die dieser Host je nach Alter tragen
|
||||||
|
# kann -- siehe Kommentar oben. Jeder, der existiert, wird beiseite
|
||||||
|
# verschoben statt gelöscht.
|
||||||
|
OLD_DIRS=("/srv/tesm" "/srv/poe_manager")
|
||||||
WORK_DIR="/tmp/tesm-update-$(date +%s)"
|
WORK_DIR="/tmp/tesm-update-$(date +%s)"
|
||||||
PACKAGE_FILE="$WORK_DIR/${PACKAGE_NAME}"
|
PACKAGE_FILE="$WORK_DIR/${PACKAGE_NAME}"
|
||||||
|
|
||||||
@@ -58,14 +69,15 @@ echo
|
|||||||
echo -e "${RED}ACHTUNG:${NC} Dies richtet TESM KOMPLETT NEU ein — frische Datenbank, KEINE"
|
echo -e "${RED}ACHTUNG:${NC} Dies richtet TESM KOMPLETT NEU ein — frische Datenbank, KEINE"
|
||||||
echo "Geräte/Switche/Zugangsdaten/Benutzer/Einstellungen aus der aktuellen Installation."
|
echo "Geräte/Switche/Zugangsdaten/Benutzer/Einstellungen aus der aktuellen Installation."
|
||||||
echo
|
echo
|
||||||
echo "Eine ggf. vorhandene Installation unter ${INSTALL_DIR} wird dabei NICHT gelöscht,"
|
echo "Alle auf diesem Host ggf. vorhandenen älteren Installationen (/srv/tesm,"
|
||||||
echo "sondern nach dem Stoppen der Dienste nach folgendem Pfad verschoben (bleibt"
|
echo "/srv/poe_manager) werden dabei NICHT gelöscht, sondern nach dem Stoppen der"
|
||||||
echo "vollständig erhalten, inkl. sqlite.db):"
|
echo "jeweiligen Dienste nach <Verzeichnis>-backup-${TIMESTAMP} verschoben (bleiben"
|
||||||
echo " ${BACKUP_DIR}"
|
echo "vollständig erhalten, inkl. sqlite.db)."
|
||||||
echo
|
echo
|
||||||
echo "Ebenfalls gestoppt/deaktiviert wird ein noch vorhandenes ursprüngliches"
|
echo "Ebenfalls gestoppt/deaktiviert werden ältere Dienste, falls noch vorhanden:"
|
||||||
echo "Bash-only-Setup (rpi-check.service/rpi-check-restart.*, falls vorhanden --"
|
echo " - poe_web.service (Flask-App \"PoE Manager\" unter /srv/poe_manager)"
|
||||||
echo "der Vorgänger von TESM ohne Datenbank/Web-UI)."
|
echo " - rpi-check.service / rpi-check-restart.* (das ursprüngliche reine"
|
||||||
|
echo " Bash-Setup aus dem Repo WiS/Aruba-PoE, ganz ohne Datenbank/Web-UI)"
|
||||||
echo
|
echo
|
||||||
echo -e "${YELLOW}Falls noch nicht geschehen: JETZT abbrechen und zuerst unter${NC}"
|
echo -e "${YELLOW}Falls noch nicht geschehen: JETZT abbrechen und zuerst unter${NC}"
|
||||||
echo -e "${YELLOW}Einstellungen -> Im-/Export ein Backup der aktuellen Daten exportieren!${NC}"
|
echo -e "${YELLOW}Einstellungen -> Im-/Export ein Backup der aktuellen Daten exportieren!${NC}"
|
||||||
@@ -79,21 +91,27 @@ if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "${RED}→${NC} Stoppe und deaktiviere bestehende Dienste..."
|
echo -e "${RED}→${NC} Stoppe und deaktiviere bestehende Dienste..."
|
||||||
# Aktuelle TESM-Dienste UND das ursprüngliche, viel ältere Bash-only-Setup
|
# Alle drei historischen Generationen -- je nachdem, was auf diesem Host
|
||||||
# (rpi-check.service/rpi-check-restart.*) -- je nachdem, was auf diesem
|
# tatsächlich (noch) existiert. "|| true" macht nichts kaputt, falls
|
||||||
# Host tatsächlich (noch) existiert. "|| true" macht nichts kaputt, falls
|
|
||||||
# einzelne Units gar nicht vorhanden sind.
|
# einzelne Units gar nicht vorhanden sind.
|
||||||
systemctl stop tesm.service tesm-check.service tesm-check-restart.timer 2>/dev/null || true
|
systemctl stop tesm.service tesm-check.service tesm-check-restart.timer 2>/dev/null || true
|
||||||
systemctl disable tesm.service tesm-check.service tesm-check-restart.timer 2>/dev/null || true
|
systemctl disable tesm.service tesm-check.service tesm-check-restart.timer 2>/dev/null || true
|
||||||
|
systemctl stop poe_web.service 2>/dev/null || true
|
||||||
|
systemctl disable poe_web.service 2>/dev/null || true
|
||||||
systemctl stop rpi-check.service rpi-check-restart.service rpi-check-restart.timer 2>/dev/null || true
|
systemctl stop rpi-check.service rpi-check-restart.service rpi-check-restart.timer 2>/dev/null || true
|
||||||
systemctl disable rpi-check.service rpi-check-restart.service rpi-check-restart.timer 2>/dev/null || true
|
systemctl disable rpi-check.service rpi-check-restart.service rpi-check-restart.timer 2>/dev/null || true
|
||||||
echo -e "${GREEN}✔${NC} Dienste gestoppt und deaktiviert."
|
echo -e "${GREEN}✔${NC} Dienste gestoppt und deaktiviert."
|
||||||
|
|
||||||
if [ -d "$INSTALL_DIR" ]; then
|
BACKED_UP_DIRS=()
|
||||||
echo -e "${RED}→${NC} Sichere bestehende Installation nach ${BACKUP_DIR}..."
|
for dir in "${OLD_DIRS[@]}"; do
|
||||||
mv "$INSTALL_DIR" "$BACKUP_DIR"
|
if [ -d "$dir" ]; then
|
||||||
echo -e "${GREEN}✔${NC} Alte Installation gesichert (nicht gelöscht)."
|
dest="${dir}-backup-${TIMESTAMP}"
|
||||||
|
echo -e "${RED}→${NC} Sichere ${dir} nach ${dest}..."
|
||||||
|
mv "$dir" "$dest"
|
||||||
|
BACKED_UP_DIRS+=("$dest")
|
||||||
|
echo -e "${GREEN}✔${NC} Gesichert (nicht gelöscht)."
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
echo -e "${RED}→${NC} Lade Paket von ${DOWNLOAD_URL}..."
|
echo -e "${RED}→${NC} Lade Paket von ${DOWNLOAD_URL}..."
|
||||||
mkdir -p "$WORK_DIR"
|
mkdir -p "$WORK_DIR"
|
||||||
@@ -122,10 +140,12 @@ echo "Bitte jetzt eines von beidem tun:"
|
|||||||
echo " a) Alle Geräte/Switche/Zugangsdaten/Benutzer/Einstellungen manuell neu anlegen, oder"
|
echo " a) Alle Geräte/Switche/Zugangsdaten/Benutzer/Einstellungen manuell neu anlegen, oder"
|
||||||
echo " b) Ein vor dem Update exportiertes Backup unter Einstellungen -> Im-/Export importieren."
|
echo " b) Ein vor dem Update exportiertes Backup unter Einstellungen -> Im-/Export importieren."
|
||||||
echo
|
echo
|
||||||
if [ -d "$BACKUP_DIR" ]; then
|
if [ "${#BACKED_UP_DIRS[@]}" -gt 0 ]; then
|
||||||
echo "Falls kein Export gemacht wurde: die alte Datenbank liegt unverändert unter"
|
echo "Falls kein Export gemacht wurde: die alte(n) Datenbank(en) liegen unverändert unter:"
|
||||||
echo " ${BACKUP_DIR}/sqlite.db"
|
for dest in "${BACKED_UP_DIRS[@]}"; do
|
||||||
echo "und kann bei Bedarf manuell ausgelesen werden (z.B. mit sqlite3)."
|
echo " ${dest}/sqlite.db"
|
||||||
|
done
|
||||||
|
echo "und können bei Bedarf manuell ausgelesen werden (z.B. mit sqlite3)."
|
||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
echo "Hinweis zum Admin-Konto der neuen Installation: siehe Ausgabe von install.sh oben"
|
echo "Hinweis zum Admin-Konto der neuen Installation: siehe Ausgabe von install.sh oben"
|
||||||
|
|||||||
Reference in New Issue
Block a user