agnes-the-ai-analyst/server/setup-snapshot-schedule.sh
Petr c56905d34f Initial commit: OSS data distribution platform
Open-source AI data analyst platform extracted from internal repo.
Includes data sync engine, Keboola adapter, Flask web portal,
server deployment scripts, and configuration templates.
2026-03-08 23:31:28 +01:00

63 lines
2 KiB
Bash
Executable file

#!/bin/bash
# Set up GCP automatic snapshot schedules for data-disk and home-disk
#
# Run once from local machine (requires gcloud auth):
# ./server/setup-snapshot-schedule.sh
#
# This creates a daily snapshot policy with 14-day retention
# and attaches it to both persistent disks.
set -euo pipefail
PROJECT="kids-ai-data-analysis"
REGION="europe-north1"
ZONE="${REGION}-a"
POLICY_NAME="daily-backup"
RETENTION_DAYS=14
START_TIME="02:00"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*"
}
# Check gcloud is available
if ! command -v gcloud &>/dev/null; then
echo "ERROR: gcloud CLI not found. Install it from https://cloud.google.com/sdk"
exit 1
fi
# Step 1: Create snapshot schedule policy
log "Creating snapshot schedule policy '$POLICY_NAME'..."
if gcloud compute resource-policies describe "$POLICY_NAME" \
--project="$PROJECT" --region="$REGION" &>/dev/null; then
log "Policy '$POLICY_NAME' already exists, skipping creation"
else
gcloud compute resource-policies create snapshot-schedule "$POLICY_NAME" \
--project="$PROJECT" \
--region="$REGION" \
--max-retention-days="$RETENTION_DAYS" \
--daily-schedule \
--start-time="$START_TIME" \
--description="Daily snapshots for data broker disks, ${RETENTION_DAYS}-day retention"
log "Policy created"
fi
# Step 2: Attach policy to disks
for DISK in data-disk home-disk; do
log "Attaching policy to $DISK..."
if gcloud compute disks add-resource-policies "$DISK" \
--project="$PROJECT" \
--zone="$ZONE" \
--resource-policies="$POLICY_NAME" 2>/dev/null; then
log " $DISK: policy attached"
else
log " $DISK: policy may already be attached (or disk not found)"
fi
done
log ""
log "Done! Verify in GCP Console:"
log " https://console.cloud.google.com/compute/snapshots?project=$PROJECT"
log ""
log "Snapshots will be taken daily at $START_TIME UTC"
log "Retention: $RETENTION_DAYS days (older snapshots auto-deleted)"