49 lines
2.2 KiB
Bash
Executable File
49 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -Eeuo pipefail
|
|
|
|
if [[ ${EUID:-$(id -u)} -ne 0 ]]; then
|
|
echo "Run this installer as root" >&2
|
|
exit 2
|
|
fi
|
|
|
|
project_root=${PLATFORM_ROOT:-/opt/data-terminal-cloud/current}
|
|
install -d -m 0700 /etc/data-terminal-cloud
|
|
install -d -m 0750 /var/lib/data-terminal-cloud-monitor
|
|
platform_env="$project_root/deploy/server/.env"
|
|
if [[ -r "$platform_env" && ! -s /etc/data-terminal-cloud/platform-health-callback-secret ]]; then
|
|
platform_health_secret=$(sed -n 's/^PLATFORM_HEALTH_CALLBACK_SECRET=//p' "$platform_env" | head -n1)
|
|
if (( ${#platform_health_secret} >= 32 )); then
|
|
umask 077
|
|
printf '%s\n' "$platform_health_secret" >/etc/data-terminal-cloud/platform-health-callback-secret
|
|
fi
|
|
fi
|
|
if [[ -s /etc/data-terminal-cloud/platform-health-callback-secret ]]; then
|
|
chmod 0600 /etc/data-terminal-cloud/platform-health-callback-secret
|
|
fi
|
|
if [[ ! -s /etc/data-terminal-cloud/monitor-webhook-secret ]]; then
|
|
umask 077
|
|
openssl rand -base64 48 >/etc/data-terminal-cloud/monitor-webhook-secret
|
|
fi
|
|
chmod 0600 /etc/data-terminal-cloud/monitor-webhook-secret
|
|
if [[ ! -e /etc/data-terminal-cloud/monitor.env ]]; then
|
|
public_origin=$(sed -n 's/^PUBLIC_ORIGIN=//p' "$platform_env" 2>/dev/null | head -n1)
|
|
report_url=
|
|
if [[ "$public_origin" == https://* && -s /etc/data-terminal-cloud/platform-health-callback-secret ]]; then
|
|
report_url="$public_origin/callbacks/v1/platform-health"
|
|
fi
|
|
cat >/etc/data-terminal-cloud/monitor.env <<EOF
|
|
HOST_DEPLOYMENT_PROFILE=demo
|
|
PLATFORM_HEALTH_REPORT_URL=$report_url
|
|
PLATFORM_HEALTH_REPORT_SECRET_FILE=/etc/data-terminal-cloud/platform-health-callback-secret
|
|
ALERT_WEBHOOK_URL=
|
|
ALERT_WEBHOOK_SECRET_FILE=/etc/data-terminal-cloud/monitor-webhook-secret
|
|
EOF
|
|
fi
|
|
chmod 0600 /etc/data-terminal-cloud/monitor.env
|
|
install -m 0644 "$project_root/deploy/server/platform-health-monitor.service" /etc/systemd/system/platform-health-monitor.service
|
|
install -m 0644 "$project_root/deploy/server/platform-health-monitor.timer" /etc/systemd/system/platform-health-monitor.timer
|
|
systemctl daemon-reload
|
|
systemctl enable --now platform-health-monitor.timer
|
|
systemctl is-active --quiet platform-health-monitor.timer
|
|
echo "platform-health-monitor.timer enabled"
|