Use docker fallback for weather report script
This commit is contained in:
@@ -25,7 +25,7 @@ SEND_NTFY="${SEND_NTFY:-0}"
|
|||||||
NTFY_TOPIC="${NTFY_TOPIC:-homelab-info}"
|
NTFY_TOPIC="${NTFY_TOPIC:-homelab-info}"
|
||||||
NTFY_SCRIPT="${NTFY_SCRIPT:-/mnt/user/services/homelab-infra/ops/restore-tests/send-ntfy.sh}"
|
NTFY_SCRIPT="${NTFY_SCRIPT:-/mnt/user/services/homelab-infra/ops/restore-tests/send-ntfy.sh}"
|
||||||
INCLUDE_WEATHER_REPORT="${INCLUDE_WEATHER_REPORT:-0}"
|
INCLUDE_WEATHER_REPORT="${INCLUDE_WEATHER_REPORT:-0}"
|
||||||
WEATHER_REPORT_SCRIPT="${WEATHER_REPORT_SCRIPT:-/mnt/user/services/homelab-infra/services/posture-check/weather-day-report.py}"
|
WEATHER_REPORT_SCRIPT="${WEATHER_REPORT_SCRIPT:-/mnt/user/services/homelab-infra/services/posture-check/weather-day-report.sh}"
|
||||||
BORG_CONTAINER="${BORG_CONTAINER:-borg-ui}"
|
BORG_CONTAINER="${BORG_CONTAINER:-borg-ui}"
|
||||||
PROMETHEUS_CONTAINER="${PROMETHEUS_CONTAINER:-monitoring-prometheus}"
|
PROMETHEUS_CONTAINER="${PROMETHEUS_CONTAINER:-monitoring-prometheus}"
|
||||||
TRAEFIK_ACME_PATH="${TRAEFIK_ACME_PATH:-/mnt/user/appdata/traefik/letsencrypt/acme.json}"
|
TRAEFIK_ACME_PATH="${TRAEFIK_ACME_PATH:-/mnt/user/appdata/traefik/letsencrypt/acme.json}"
|
||||||
@@ -226,14 +226,6 @@ collect_weather_report() {
|
|||||||
append "## Wetterbericht"
|
append "## Wetterbericht"
|
||||||
append ""
|
append ""
|
||||||
|
|
||||||
if ! command -v python3 >/dev/null 2>&1; then
|
|
||||||
append "- Wetterbericht nicht erzeugt: \`python3\` ist auf dem Host nicht verfuegbar."
|
|
||||||
append ""
|
|
||||||
record_section_error "weather" "python3 fehlt"
|
|
||||||
set_summary "weather_report_status" "missing-python"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -f "$WEATHER_REPORT_SCRIPT" ]; then
|
if [ ! -f "$WEATHER_REPORT_SCRIPT" ]; then
|
||||||
append "- Wetterbericht nicht erzeugt: Script fehlt unter \`$WEATHER_REPORT_SCRIPT\`."
|
append "- Wetterbericht nicht erzeugt: Script fehlt unter \`$WEATHER_REPORT_SCRIPT\`."
|
||||||
append ""
|
append ""
|
||||||
@@ -243,7 +235,7 @@ collect_weather_report() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
local weather_out
|
local weather_out
|
||||||
if weather_out="$(python3 "$WEATHER_REPORT_SCRIPT" --heading-level 3 2>&1)"; then
|
if weather_out="$(bash "$WEATHER_REPORT_SCRIPT" --heading-level 3 2>&1)"; then
|
||||||
printf '%s\n\n' "$weather_out" >> "$BODY_PATH"
|
printf '%s\n\n' "$weather_out" >> "$BODY_PATH"
|
||||||
set_summary "weather_report_status" "ok"
|
set_summary "weather_report_status" "ok"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -84,7 +84,9 @@ printf '%s' 'glsa_REPLACE_WITH_ROTATED_READ_TOKEN' > /mnt/user/appdata/secrets/m
|
|||||||
chmod 600 /mnt/user/appdata/secrets/monitoring_grafana_weather_report_token.txt
|
chmod 600 /mnt/user/appdata/secrets/monitoring_grafana_weather_report_token.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
Der Wetterbericht-Generator nutzt `python3` auf dem Host.
|
Der Wetterbericht-Generator nutzt `python3` auf dem Host, falls vorhanden.
|
||||||
|
Ohne Host-`python3` faellt er automatisch auf Docker mit
|
||||||
|
`python:3.13-alpine` zurueck.
|
||||||
|
|
||||||
User Script:
|
User Script:
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,31 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
PY_SCRIPT="${WEATHER_REPORT_PY_SCRIPT:-$SCRIPT_DIR/weather-day-report.py}"
|
||||||
|
TOKEN_FILE="${GRAFANA_TOKEN_FILE:-/mnt/user/appdata/secrets/monitoring_grafana_weather_report_token.txt}"
|
||||||
|
PY_IMAGE="${WEATHER_REPORT_PY_IMAGE:-python:3.13-alpine}"
|
||||||
|
|
||||||
|
if command -v python3 >/dev/null 2>&1; then
|
||||||
|
exec python3 "$PY_SCRIPT" "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
|
echo "weather-day-report: neither python3 nor docker is available" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$TOKEN_FILE" ]; then
|
||||||
|
echo "weather-day-report: token file missing: $TOKEN_FILE" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
exec docker run --rm \
|
||||||
|
--network host \
|
||||||
|
-v "$PY_SCRIPT:/weather-day-report.py:ro" \
|
||||||
|
-v "$TOKEN_FILE:/run/secrets/grafana_weather_report_token:ro" \
|
||||||
|
-e GRAFANA_TOKEN_FILE=/run/secrets/grafana_weather_report_token \
|
||||||
|
-e GRAFANA_URL="${GRAFANA_URL:-https://monitoring.kaleschke.info}" \
|
||||||
|
-e WEATHER_REPORT_TZ="${WEATHER_REPORT_TZ:-Europe/Berlin}" \
|
||||||
|
"$PY_IMAGE" \
|
||||||
|
python /weather-day-report.py "$@"
|
||||||
Reference in New Issue
Block a user