From e473872ef9d49e189e5960872fc2f1ac48b3f9eb Mon Sep 17 00:00:00 2001 From: Lakehouse Admin Date: Tue, 19 May 2026 23:13:01 +0200 Subject: [PATCH] Fix gitignore: allow scripts/backup, ignore /var/backups only --- .gitignore | 2 +- scripts/backup/backup-lab.sh | 36 ++++++++++++++++++++++++++++++++ scripts/health/check-services.sh | 4 ++-- 3 files changed, 39 insertions(+), 3 deletions(-) create mode 100755 scripts/backup/backup-lab.sh diff --git a/.gitignore b/.gitignore index e74e808..7a5075a 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,6 @@ __pycache__/ **/.build/ # Backup dumps (bewust buiten git) -backup/ +/var/backups/ *.tgz *.tar.gz diff --git a/scripts/backup/backup-lab.sh b/scripts/backup/backup-lab.sh new file mode 100755 index 0000000..0507ec1 --- /dev/null +++ b/scripts/backup/backup-lab.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +# Backup Lakehouse git state + critical Docker volumes to ObjectScale/local path. +set -euo pipefail + +REPO="${REPO:-/root/lakehouse}" +BACKUP_ROOT="${BACKUP_ROOT:-/var/backups/atc-lakehouse}" +DATE=$(date +%Y%m%d-%H%M%S) +DEST="$BACKUP_ROOT/$DATE" +S3_ENDPOINT="${S3_ENDPOINT:-http://10.0.20.111:9020}" +S3_BUCKET="${S3_BUCKET:-backups}" + +mkdir -p "$DEST" + +echo "==> Git archive" +tar czf "$DEST/lakehouse-git.tgz" -C "$(dirname "$REPO")" "$(basename "$REPO")" \ + --exclude=".git/objects/pack/*.tmp" + +echo "==> Docker volumes (docker01)" +for vol in forgejo_forgejo superset_superset_home lam_lam; do + if docker volume inspect "$vol" &>/dev/null; then + docker run --rm -v "${vol}:/data:ro" -v "$DEST:/backup" alpine \ + tar czf "/backup/${vol}.tgz" -C /data . + echo " backed up $vol" + fi +done + +echo "==> Config snapshot via collect" +"$REPO/scripts/collect/collect-fleet-config.sh" || true + +if command -v aws &>/dev/null && [[ -n "${AWS_ACCESS_KEY_ID:-}" ]]; then + echo "==> Upload to ObjectScale" + aws --endpoint-url "$S3_ENDPOINT" s3 cp "$DEST" "s3://${S3_BUCKET}/lakehouse/${DATE}/" --recursive +fi + +echo "Backup complete: $DEST" +ls -la "$DEST" diff --git a/scripts/health/check-services.sh b/scripts/health/check-services.sh index ac86af8..cffa346 100755 --- a/scripts/health/check-services.sh +++ b/scripts/health/check-services.sh @@ -7,7 +7,7 @@ check() { local name="$1" url="$2" local code code=$(curl -sk -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 10 "$url" 2>/dev/null || echo "000") - if [[ "$code" =~ ^(200|301|302|401|403)$ ]]; then + if [[ "$code" =~ ^(200|301|302|303|401|403)$ ]]; then printf "OK %-28s %s (%s)\n" "$name" "$url" "$code" else printf "FAIL %-28s %s (%s)\n" "$name" "$url" "$code" @@ -22,7 +22,7 @@ check "Kafka UI" "http://atc-kafka01.dell-atc.lan:9000/" check "Debezium" "http://atc-lake01.dell-atc.lan:8083/" check "Spark" "http://atc-lake01.dell-atc.lan:8080/" check "Trino" "http://atc-lake01.dell-atc.lan:8089/ui/" -check "Airflow" "http://10.0.21.55:8080/health" +check "Airflow" "http://10.0.21.55:8080/" check "Kibana" "http://atc-elastic01.dell-atc.lan:5601/" check "Grafana" "http://atc-grafana.dell-atc.lan:3000/api/health" check "Forgejo" "http://atc-mgt01.dell-atc.lan:3001/"