62 lines
1.8 KiB
Bash
Executable File
62 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="${1:-/opt/domaincheck}"
|
|
ENV_FILE="/etc/default/domaincheck-node-agent"
|
|
SERVICE_FILE="/etc/systemd/system/domaincheck-node-agent.service"
|
|
SERVICE_NAME="domaincheck-node-agent"
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
resolve_project_root() {
|
|
local candidate
|
|
for candidate in \
|
|
"${ROOT_DIR}/domainCheck" \
|
|
"${ROOT_DIR}/domain-api" \
|
|
"${ROOT_DIR}" \
|
|
"$(cd "${SCRIPT_DIR}/../.." && pwd)"; do
|
|
if [[ -f "${candidate}/deploy/systemd/domain-node-agent.service" && -f "${candidate}/deploy/multi-region/templates/domaincheck-node-agent.env.example" ]]; then
|
|
printf '%s' "${candidate}"
|
|
return 0
|
|
fi
|
|
done
|
|
return 1
|
|
}
|
|
|
|
PROJECT_ROOT="$(resolve_project_root || true)"
|
|
if [[ -z "${PROJECT_ROOT}" ]]; then
|
|
echo "unable to resolve project root under ${ROOT_DIR} or ${SCRIPT_DIR}" >&2
|
|
exit 1
|
|
fi
|
|
|
|
TEMPLATE_FILE="${PROJECT_ROOT}/deploy/multi-region/templates/domaincheck-node-agent.env.example"
|
|
UNIT_TEMPLATE="${PROJECT_ROOT}/deploy/systemd/domain-node-agent.service"
|
|
|
|
echo "[1/5] install systemd unit"
|
|
install -m 0644 "${UNIT_TEMPLATE}" "${SERVICE_FILE}"
|
|
|
|
echo "[2/5] install env template if absent"
|
|
if [[ ! -f "${ENV_FILE}" ]]; then
|
|
install -m 0644 "${TEMPLATE_FILE}" "${ENV_FILE}"
|
|
echo "created ${ENV_FILE}"
|
|
else
|
|
echo "keep existing ${ENV_FILE}"
|
|
fi
|
|
|
|
echo "[3/5] reload systemd"
|
|
systemctl daemon-reload
|
|
|
|
echo "[4/5] enable service"
|
|
systemctl enable "${SERVICE_NAME}" >/dev/null
|
|
|
|
echo "[5/5] next steps"
|
|
echo "project_root=${PROJECT_ROOT}"
|
|
echo "edit ${ENV_FILE} and set:"
|
|
echo " OPS_CONTROL_PLANE_BASE_URL"
|
|
echo " OPS_AGENT_TOKEN"
|
|
echo " NODE_CODE / NODE_REGION / NODE_ROLE"
|
|
echo
|
|
echo "then run:"
|
|
echo " systemctl restart ${SERVICE_NAME}"
|
|
echo " systemctl status ${SERVICE_NAME} --no-pager -l"
|