feat: add ops center and node onboarding flow

This commit is contained in:
Your Name
2026-04-18 23:52:51 +08:00
parent 246838ae4c
commit b9c29481b5
142 changed files with 89727 additions and 186 deletions

View File

@@ -0,0 +1,106 @@
#!/usr/bin/env bash
ops_center_normalize_profile_key() {
local raw_value="${1:-default}"
printf '%s' "${raw_value}" | tr '[:lower:]-./' '[:upper:]____' | tr -cd 'A-Z0-9_'
}
ops_center_load_config() {
local caller_dir="${1:-}"
if [[ -z "${caller_dir}" ]]; then
caller_dir="$(pwd)"
fi
local env_active_profile="${OPS_ACTIVE_PROFILE:-}"
local env_profile_names="${OPS_PROFILE_NAMES:-}"
local env_report_root="${OPS_REPORT_ROOT:-}"
local env_mainland_api_base_url="${OPS_MAINLAND_API_BASE_URL:-}"
local env_overseas_api_base_url="${OPS_OVERSEAS_API_BASE_URL:-}"
local env_control_plane_base_url="${OPS_DEFAULT_CONTROL_PLANE_BASE_URL:-}"
local env_requested_by="${OPS_DEFAULT_REQUESTED_BY:-}"
local env_issued_by="${OPS_DEFAULT_ISSUED_BY:-}"
local env_expires_in_hours="${OPS_DEFAULT_EXPIRES_IN_HOURS:-}"
local env_root_dir="${OPS_DEFAULT_ROOT_DIR:-}"
local env_node_agent_service_name="${OPS_NODE_AGENT_SERVICE_NAME:-}"
local env_node_agent_env_file="${OPS_NODE_AGENT_ENV_FILE:-}"
OPS_CENTER_SCRIPT_DIR="${caller_dir}"
OPS_CENTER_API_DIR="$(cd "${OPS_CENTER_SCRIPT_DIR}/../.." && pwd)"
OPS_CENTER_PROJECT_ROOT="$(cd "${OPS_CENTER_API_DIR}/.." && pwd)"
OPS_CENTER_RUNTIME_DIR="${OPS_CENTER_API_DIR}/runtime"
OPS_CENTER_REPORT_ROOT_DEFAULT="${OPS_CENTER_RUNTIME_DIR}/ops-center-reports"
OPS_CENTER_CONFIG_FILE="${DOMAINCHECK_OPS_CENTER_ENV:-${OPS_CENTER_ENV_FILE:-/etc/default/domaincheck-ops-center}}"
if [[ -f "${OPS_CENTER_CONFIG_FILE}" ]]; then
# shellcheck disable=SC1090
source "${OPS_CENTER_CONFIG_FILE}"
fi
OPS_CENTER_ACTIVE_PROFILE="${OPS_CENTER_PROFILE:-${DOMAINCHECK_OPS_CENTER_PROFILE:-${env_active_profile:-${OPS_ACTIVE_PROFILE:-default}}}}"
OPS_CENTER_ACTIVE_PROFILE_KEY="$(ops_center_normalize_profile_key "${OPS_CENTER_ACTIVE_PROFILE}")"
OPS_CENTER_PROFILE_NAMES="${env_profile_names:-${OPS_PROFILE_NAMES:-${OPS_CENTER_ACTIVE_PROFILE}}}"
OPS_CENTER_REPORT_ROOT="${env_report_root:-${OPS_REPORT_ROOT:-${OPS_CENTER_REPORT_ROOT_DEFAULT}}}"
OPS_CENTER_ENV_MAINLAND_API_BASE_URL="${env_mainland_api_base_url}"
OPS_CENTER_ENV_OVERSEAS_API_BASE_URL="${env_overseas_api_base_url}"
OPS_CENTER_ENV_CONTROL_PLANE_BASE_URL="${env_control_plane_base_url}"
OPS_CENTER_ENV_REQUESTED_BY="${env_requested_by}"
OPS_CENTER_ENV_ISSUED_BY="${env_issued_by}"
OPS_CENTER_ENV_EXPIRES_IN_HOURS="${env_expires_in_hours}"
OPS_CENTER_ENV_ROOT_DIR="${env_root_dir}"
OPS_CENTER_ENV_NODE_AGENT_SERVICE_NAME="${env_node_agent_service_name}"
OPS_CENTER_ENV_NODE_AGENT_ENV_FILE="${env_node_agent_env_file}"
}
ops_center_resolve_profile_value() {
local suffix="$1"
local fallback_value="${2:-}"
local profile_key="${OPS_CENTER_ACTIVE_PROFILE_KEY:-DEFAULT}"
local variable_name="OPS_PROFILE_${profile_key}_${suffix}"
local profile_value="${!variable_name:-}"
if [[ -n "${profile_value}" ]]; then
printf '%s' "${profile_value}"
else
printf '%s' "${fallback_value}"
fi
}
ops_center_resolve_mainland_api_base_url() {
ops_center_resolve_profile_value "MAINLAND_API_BASE_URL" "${OPS_CENTER_ENV_MAINLAND_API_BASE_URL:-${OPS_MAINLAND_API_BASE_URL:-http://127.0.0.1:8100}}"
}
ops_center_resolve_overseas_api_base_url() {
ops_center_resolve_profile_value "OVERSEAS_API_BASE_URL" "${OPS_CENTER_ENV_OVERSEAS_API_BASE_URL:-${OPS_OVERSEAS_API_BASE_URL:-http://127.0.0.1:8100}}"
}
ops_center_resolve_control_plane_base_url() {
ops_center_resolve_profile_value "DEFAULT_CONTROL_PLANE_BASE_URL" "${OPS_CENTER_ENV_CONTROL_PLANE_BASE_URL:-${OPS_DEFAULT_CONTROL_PLANE_BASE_URL:-}}"
}
ops_center_resolve_requested_by() {
ops_center_resolve_profile_value "DEFAULT_REQUESTED_BY" "${OPS_CENTER_ENV_REQUESTED_BY:-${OPS_DEFAULT_REQUESTED_BY:-cli/ops-center}}"
}
ops_center_resolve_issued_by() {
ops_center_resolve_profile_value "DEFAULT_ISSUED_BY" "${OPS_CENTER_ENV_ISSUED_BY:-${OPS_DEFAULT_ISSUED_BY:-ops-center}}"
}
ops_center_resolve_expires_in_hours() {
ops_center_resolve_profile_value "DEFAULT_EXPIRES_IN_HOURS" "${OPS_CENTER_ENV_EXPIRES_IN_HOURS:-${OPS_DEFAULT_EXPIRES_IN_HOURS:-72}}"
}
ops_center_resolve_root_dir() {
ops_center_resolve_profile_value "DEFAULT_ROOT_DIR" "${OPS_CENTER_ENV_ROOT_DIR:-${OPS_DEFAULT_ROOT_DIR:-/opt/domaincheck}}"
}
ops_center_resolve_node_agent_service_name() {
ops_center_resolve_profile_value "NODE_AGENT_SERVICE_NAME" "${OPS_CENTER_ENV_NODE_AGENT_SERVICE_NAME:-${OPS_NODE_AGENT_SERVICE_NAME:-domaincheck-node-agent}}"
}
ops_center_resolve_node_agent_env_file() {
ops_center_resolve_profile_value "NODE_AGENT_ENV_FILE" "${OPS_CENTER_ENV_NODE_AGENT_ENV_FILE:-${OPS_NODE_AGENT_ENV_FILE:-/etc/default/domaincheck-node-agent}}"
}
ops_center_ensure_report_dir() {
local report_dir="${1:-${OPS_CENTER_REPORT_ROOT_DEFAULT}}"
mkdir -p "${report_dir}"
}