mirror of
https://github.com/BagelHole/DevOps-Security-Agent-Skills.git
synced 2026-08-22 12:49:53 +02:00
56 lines
1.4 KiB
Bash
56 lines
1.4 KiB
Bash
#!/bin/bash
|
|||
|
|
# Vault Backup Script (Raft Storage)
|
||
|
|
# Usage: ./vault-backup.sh [output-dir]
|
||
|
|
|
||
|
|
set -euo pipefail
|
||
|
|
|
||
|
|
OUTPUT_DIR="${1:-./vault-backups}"
|
||
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
||
|
|
BACKUP_FILE="$OUTPUT_DIR/vault-snapshot-$TIMESTAMP.snap"
|
||
|
|
|
||
|
|
mkdir -p "$OUTPUT_DIR"
|
||
|
|
|
||
|
|
echo "========================================="
|
||
|
|
echo "Vault Raft Snapshot Backup"
|
||
|
|
echo "Output: $BACKUP_FILE"
|
||
|
|
echo "========================================="
|
||
|
|
echo ""
|
||
|
|
|
||
|
|
# Check Vault status
|
||
|
|
if ! vault status &>/dev/null; then
|
||
|
|
echo "Error: Cannot connect to Vault or Vault is sealed"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Take snapshot
|
||
|
|
echo "Creating snapshot..."
|
||
|
|
vault operator raft snapshot save "$BACKUP_FILE"
|
||
|
|
|
||
|
|
if [ -f "$BACKUP_FILE" ]; then
|
||
|
|
SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
|
||
|
|
echo "Snapshot created successfully!"
|
||
|
|
echo "File: $BACKUP_FILE"
|
||
|
|
echo "Size: $SIZE"
|
||
|
|
else
|
||
|
|
echo "Error: Snapshot creation failed"
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Verify snapshot
|
||
|
|
echo ""
|
||
|
|
echo "Verifying snapshot..."
|
||
|
|
vault operator raft snapshot inspect "$BACKUP_FILE" | head -20
|
||
|
|
|
||
|
|
# Cleanup old backups (keep last 7)
|
||
|
|
echo ""
|
||
|
|
echo "Cleaning up old backups (keeping last 7)..."
|
||
|
|
ls -t "$OUTPUT_DIR"/vault-snapshot-*.snap 2>/dev/null | tail -n +8 | xargs -r rm -v
|
||
|
|
|
||
|
|
echo ""
|
||
|
|
echo "========================================="
|
||
|
|
echo "Backup complete"
|
||
|
|
echo ""
|
||
|
|
echo "To restore:"
|
||
|
|
echo " vault operator raft snapshot restore $BACKUP_FILE"
|
||
|
|
echo "========================================="
|