Files
proxmox/scripts/maintenance/journal-vacuum-key-ct.sh
defiQUG bea1903ac9
Some checks failed
Deploy to Phoenix / deploy (push) Has been cancelled
Sync all local changes: docs, config, scripts, submodule refs, verification evidence
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-21 15:46:06 -08:00

53 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
# Run journalctl --vacuum-time=7d in key CTs to limit journal size.
# Usage: ./scripts/maintenance/journal-vacuum-key-ct.sh [--dry-run]
# Requires: SSH to Proxmox hosts. VMIDs: 5000 (Blockscout), 2101 (RPC), 10233/10234 (NPMplus), 2400, 10130, 10150, 10151.
# See: docs/04-configuration/STORAGE_GROWTH_AND_HEALTH.md
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)"
[[ -f "${PROJECT_ROOT}/config/ip-addresses.conf" ]] && source "${PROJECT_ROOT}/config/ip-addresses.conf" 2>/dev/null || true
VACUUM_DAYS="${VACUUM_DAYS:-7}"
DRY_RUN=0
[[ "${1:-}" == "--dry-run" ]] && DRY_RUN=1
# VMID -> host IP (from load-project-env get_host_for_vmid or defaults)
get_host() {
local vmid="$1"
case "$vmid" in
5000|10234|10237|2201|2303|2401) echo "${PROXMOX_HOST_R630_02:-192.168.11.12}";;
2101|10130|10150|10151|10233) echo "${PROXMOX_HOST_R630_01:-192.168.11.11}";;
2400) echo "${PROXMOX_HOST_ML110:-192.168.11.10}";;
*) echo "${PROXMOX_HOST_R630_01:-192.168.11.11}";;
esac
}
KEY_VMIDS="5000 2101 10233 10234 2400 10130 10150 10151"
run_ssh() { ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no root@"$1" "$2" 2>/dev/null || true; }
echo "=== Journal vacuum (keep last ${VACUUM_DAYS}d) in key CTs ==="
[[ $DRY_RUN -eq 1 ]] && echo "(dry-run: no changes)"
echo ""
for vmid in $KEY_VMIDS; do
host=$(get_host "$vmid")
status=$(run_ssh "$host" "pct status $vmid 2>/dev/null" || true)
if [[ "$status" != *"running"* ]]; then
echo " VMID $vmid: skip (not running)"
continue
fi
if [[ $DRY_RUN -eq 1 ]]; then
echo " [dry-run] VMID $vmid on $host: would run journalctl --vacuum-time=${VACUUM_DAYS}d"
else
out=$(run_ssh "$host" "pct exec $vmid -- journalctl --vacuum-time=${VACUUM_DAYS}d 2>&1" || true)
echo " VMID $vmid: ${out:-done}"
fi
done
echo ""
echo "Done. Schedule weekly (e.g. with daily-weekly-checks weekly or separate cron)."