Some checks failed
CI / skip-ci-check (pull_request) Successful in 7s
CI / lint-and-test (pull_request) Failing after 10s
CI / secret-scanning (pull_request) Successful in 7s
CI / dependency-scan (pull_request) Successful in 16s
CI / sast-scan (pull_request) Successful in 29s
CI / ansible-validation (pull_request) Failing after 54s
CI / license-check (pull_request) Successful in 14s
CI / vault-check (pull_request) Successful in 12s
CI / container-scan (pull_request) Successful in 7s
CI / sonar-analysis (pull_request) Successful in 7s
CI / playbook-test (pull_request) Successful in 25s
CI / workflow-summary (pull_request) Successful in 5s
Cal Authentik OIDC playbook/role (deferred until license), Vikunja OIDC docs and vault secrets, SSO matrix, mailcow LAN proxy fix, extended security audit docs, maintenance_cron role with group_vars split, and inventory updates (vikunja rename, identity/monitoring/cal host_vars). Co-authored-by: Cursor <cursoragent@cursor.com>
71 lines
1.7 KiB
Bash
Executable File
71 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Add or update Uptime Kuma HTTP monitors via API.
|
|
# Usage:
|
|
# source <(./scripts/vault-export-env.sh) # or export KUMA_* manually
|
|
# ./scripts/kuma-add-monitors.sh
|
|
#
|
|
# Monitors are idempotent: existing names are skipped.
|
|
|
|
set -euo pipefail
|
|
|
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
KUMA_URL="${KUMA_URL:-http://10.0.10.22:3001}"
|
|
KUMA_USER="${KUMA_USER:-admin}"
|
|
KUMA_PASSWORD="${KUMA_PASSWORD:-}"
|
|
|
|
if [[ -z "${KUMA_PASSWORD}" ]]; then
|
|
if [[ -f "${REPO_ROOT}/.env" ]]; then
|
|
# shellcheck disable=SC1091
|
|
set -a
|
|
source "${REPO_ROOT}/.env"
|
|
set +a
|
|
KUMA_PASSWORD="${KUMA_PASSWORD:-}"
|
|
fi
|
|
fi
|
|
|
|
if [[ -z "${KUMA_PASSWORD}" ]]; then
|
|
echo "Set KUMA_PASSWORD (or run vault-export-env.sh first)" >&2
|
|
exit 1
|
|
fi
|
|
|
|
export KUMA_URL KUMA_USER KUMA_PASSWORD
|
|
|
|
"${REPO_ROOT}/.venv/bin/python3" <<'PY'
|
|
import os
|
|
import sys
|
|
|
|
try:
|
|
from uptime_kuma_api import UptimeKumaApi
|
|
except ImportError:
|
|
print("Run: .venv/bin/pip install uptime-kuma-api", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
MONITORS = [
|
|
{
|
|
"type": "http",
|
|
"name": "Gitea",
|
|
"url": "https://git.levkin.ca/user/login",
|
|
"interval": 60,
|
|
"retryInterval": 60,
|
|
"maxretries": 3,
|
|
"accepted_statuscodes": ["200-299"],
|
|
},
|
|
]
|
|
|
|
url = os.environ["KUMA_URL"]
|
|
user = os.environ["KUMA_USER"]
|
|
password = os.environ["KUMA_PASSWORD"]
|
|
|
|
with UptimeKumaApi(url) as api:
|
|
api.login(user, password)
|
|
existing = {m.get("name"): m for m in api.get_monitors()}
|
|
|
|
for spec in MONITORS:
|
|
name = spec["name"]
|
|
if name in existing:
|
|
print(f"skip (exists): {name} id={existing[name].get('id')}")
|
|
continue
|
|
result = api.add_monitor(**spec)
|
|
print(f"added: {name} -> {result}")
|
|
PY
|