feat: add ops center and node onboarding flow
This commit is contained in:
106
domain-api/deploy/multi-region/lib_ops_center.sh
Normal file
106
domain-api/deploy/multi-region/lib_ops_center.sh
Normal 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}"
|
||||
}
|
||||
Reference in New Issue
Block a user