feat: add ops center and node onboarding flow
This commit is contained in:
61
domain-api/deploy/multi-region/bootstrap_node_agent.sh
Executable file
61
domain-api/deploy/multi-region/bootstrap_node_agent.sh
Executable file
@@ -0,0 +1,61 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user