initialer upload des projektes
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
#!/bin/bash
|
||||
|
||||
# #############################################################################
|
||||
# SCRIPT : deploy-fb-monitor.sh
|
||||
# VERSION : 1.2.0
|
||||
# DESCRIPTION : Deployment- & Backup-Tool für FB-Enterprise-Monitor
|
||||
# AUTHOR : Andreas O. Schmidt
|
||||
# CONTACT : cert.a.o.schmidt@outlook.de
|
||||
#
|
||||
# ISMS/WIKI : https://wiki.deinefirma.internal
|
||||
# GIT : https://github.com[DeinAccount]/[Projekt]/blob/main/deploy.sh
|
||||
#
|
||||
# REVISION :
|
||||
# - Last : 2026-02-04
|
||||
# - Next : 2026-08-04
|
||||
# #############################################################################
|
||||
|
||||
|
||||
|
||||
# FritzBox-Monitor Deployment & Backup Tool
|
||||
|
||||
PROJECT_NAME="fbsyslog-monitor"
|
||||
VERSION=$2
|
||||
TAG=$3
|
||||
BACKUP_DIR="./backups"
|
||||
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||||
DATADIR=.data
|
||||
|
||||
case "$1" in
|
||||
pack)
|
||||
echo "📦 Packe Monitor-Setup für neuen Standort..."
|
||||
mkdir -p $BACKUP_DIR
|
||||
tar -czvf "${BACKUP_DIR}/${PROJECT_NAME}_${VERSION}_${TIMESTAMP}.tar.gz" \
|
||||
syslog-fb-monitor.py dockerfile requirements.txt compose.yaml.dist .env.dist README.md deploy-fb-monitor.sh
|
||||
echo "✅ Archiv erstellt: ${BACKUP_DIR}/${PROJECT_NAME}_${VERSION}_${TAG}_${TIMESTAMP}.tar.gz"
|
||||
;;
|
||||
backup)
|
||||
echo "📦 Packe Monitor-Backup für neuen Standort..."
|
||||
mkdir -p $BACKUP_DIR
|
||||
tar -czvf "${BACKUP_DIR}/${PROJECT_NAME}_${VERSION}_${TIMESTAMP}.tar.gz" \
|
||||
syslog-fb-monitor.py dockerfile requirements.txt compose.yaml .env.dist .env README.md deploy-fb-monitor.sh
|
||||
echo "✅ Archiv erstellt: ${BACKUP_DIR}/${PROJECT_NAME}_${VERSION}_${TAG}_${TIMESTAMP}.tar.gz"
|
||||
;;
|
||||
|
||||
deploy)
|
||||
echo "🚀 Initialisiere neues Standort-Deployment..."
|
||||
mkdir -p ${DATADIR}
|
||||
|
||||
# 1. Interaktive Abfrage
|
||||
read -p "📍 Standort-Name (z.B. hamburg1): " SITE_NAME
|
||||
read -p "🌐 IP der FRITZ!Box: " FB_IP
|
||||
read -p "🖥️ IP des Syslog-Servers: " SYSLOG_IP
|
||||
|
||||
# 2. Dateien vorbereiten
|
||||
cp .env.dist .env
|
||||
sed -i "s/^FRITZ_IP=.*/FRITZ_IP=${FB_IP}/" .env
|
||||
sed -i "s/^SYSLOG_SERVER=.*/SYSLOG_SERVER=${SYSLOG_IP}/" .env
|
||||
sed -i "s/^SYSLOG_SENDER_NAME=.*/SYSLOG_SENDER_NAME=fritzbox_${SITE_NAME}/" .env
|
||||
|
||||
C_NAME="fritz-monitor-${SITE_NAME}"
|
||||
echo -e "\n# containername=${C_NAME}" >> .env
|
||||
|
||||
if [ -f compose.yaml.dist ]; then
|
||||
cp compose.yaml.dist compose.yaml
|
||||
sed -i "s/container_name:.*/container_name: ${C_NAME}/" compose.yaml
|
||||
fi
|
||||
|
||||
# 3. Manuelle Kontrolle
|
||||
echo "Öffne .env zur Endkontrolle..."
|
||||
sleep 1
|
||||
nano .env
|
||||
|
||||
# 4. Start und Erster Log-Check via Compose
|
||||
# --build erzwingt frisches Image, -d läuft im Hintergrund
|
||||
docker compose up -d --build
|
||||
|
||||
echo "⏳ Kurzer Wait für den ersten Connect (50s)..."
|
||||
sleep 50
|
||||
|
||||
echo "📊 Zeige erste Logs (Service-Level)..."
|
||||
# Nutzt den Service-Namen aus der compose.yaml, ignoriert Synology-Präfixe
|
||||
docker compose logs --tail 50
|
||||
|
||||
echo "⏳ Langer Wait für vollständigen Initial-Sync (200s)..."
|
||||
sleep 200
|
||||
|
||||
echo "📊 Zeige finale Logs vor Abschluss..."
|
||||
docker compose logs --tail 50
|
||||
read -p "wenn alles Okay ist, weiter mit enter, bei fehlern, mit Strg+C abbrechen:"
|
||||
|
||||
# 5. Variable auf false setzen und finaler Restart
|
||||
echo "✅ Initialer Sync verarbeitet, setze SEND_INITIAL_LOG auf false"
|
||||
sed -i 's/^SEND_INITIAL_LOG=.*/SEND_INITIAL_LOG=false/' .env
|
||||
|
||||
echo "Restart mit neuen Einstellungen..."
|
||||
docker compose up -d
|
||||
|
||||
echo "🏁 Setup für Standort ${SITE_NAME} abgeschlossen!"
|
||||
# Zur Sicherheit zeigen wir an, wie der Container nun wirklich heißt
|
||||
docker compose ps
|
||||
;; start)
|
||||
echo "🚀 Starte Monitor-Container..."
|
||||
mkdir ${DATADIR}
|
||||
docker compose up -d --build
|
||||
echo "📊 Zeige Logs (Abbrechen mit Strg+C)..."
|
||||
sleep 20
|
||||
docker logs -f fritz-syslog-forwarder
|
||||
;;
|
||||
stop)
|
||||
echo "🚀 Stoppe Monitor-Container..."
|
||||
docker compose logs
|
||||
docker compose down
|
||||
echo "📊 Zeige Logs (Abbrechen mit Strg+C)..."
|
||||
sleep 2
|
||||
docker logs -f fritz-syslog-forwarder
|
||||
;;
|
||||
|
||||
update)
|
||||
echo "🚀 Update Monitor-Container..."
|
||||
docker compose down && docker compose up -d --build
|
||||
echo "📊 Zeige Logs (Abbrechen mit Strg+C)..."
|
||||
sleep 2
|
||||
docker logs -f fritz-syslog-forwarder
|
||||
;;
|
||||
help)
|
||||
echo -e "--- 📖 Lange Hilfe: FRITZ!Box Enterprise Monitor Deployment ---"
|
||||
echo -e "Dieses Skript automatisiert das Rollout von FB-Monitoren."
|
||||
echo -e "\nBefehle:"
|
||||
echo -e " pack : Erstellt ein sauberes Archiv ohne .env für neue Standorte."
|
||||
echo -e " backup : Sichert alles inkl. .env und Hashes (Zustandssicherung)."
|
||||
echo -e " deploy : Interaktives Setup (IPs, Name, Nano, Initial-Sync)."
|
||||
echo -e " update : Zieht neues Image und startet Container neu."
|
||||
echo -e " stop : Fährt den Stack am Standort sauber runter."
|
||||
echo -e "\nParameter:"
|
||||
echo -e " <version> : Versionsnummer für das Archiv (z.B. 1.0.2)"
|
||||
echo -e " <tag> : Standort oder Status (z.B. 'hamburg' oder 'stable')"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "❌ Ungültiger Aufruf!"
|
||||
echo -e "Nutzung: $0 {pack|backup|deploy|update|stop|help} [[<version>] [<tag>]]"
|
||||
echo -e "\nSynopsys:"
|
||||
echo -e " $0 pack 0.1.2 'release' -> Sauberes Paket packen"
|
||||
echo -e " $0 backup 0.1.2 'hamburg1' -> Lokales Backup inkl. Hashes"
|
||||
echo -e " $0 deploy -> Interaktives Standort-Setup"
|
||||
exit 1
|
||||
;;
|
||||
#*)
|
||||
# echo "Nutzung: $0 {pack|backup|setup|deploy|update|stop} [[<version>] [<tag>]] \n synopsys: \n deploy-fb-monitor.sh pack 0.1.2 'latest' \n deploy-fb-monitor.sh backup 0.1.2 'site1' \n deploy-fb-monitor.sh pack 0.1.2 \n deploy-fb-monitor.sh backup site1 "
|
||||
# exit 1
|
||||
# ;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user