From d0e73a6a97d9a8c38db4480ae82179948b1107b5 Mon Sep 17 00:00:00 2001 From: Randall Date: Fri, 3 Jan 2025 15:47:47 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20goedge=5Fadd=5Fnode.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- goedge_add_node.sh | 67 +++++++++++++++++++++++++--------------------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/goedge_add_node.sh b/goedge_add_node.sh index c2e63aa..73d0fff 100644 --- a/goedge_add_node.sh +++ b/goedge_add_node.sh @@ -56,7 +56,13 @@ CLUSTER_ID="" GROUP_ID=0 REGION_ID=0 DNS_ROUTES="" -API_HOSTS=() # 存放多个API地址 + +# HTTP_API: 必填,用于脚本调用HTTP接口 +HTTP_API="" + +# RPC endpoints: 用于写入 api_node.yaml,可多地址 +API_HOSTS=() + GRANT_ID=1 # 默认 WEB_INSTALL=0 # 是否使用 --webinstall @@ -94,8 +100,12 @@ while [[ $# -gt 0 ]]; do DNS_ROUTES="$2" shift 2 ;; + --http-api) + HTTP_API="$2" + shift 2 + ;; --api-host) - # 将后续所有非开头带 "--" 的参数视为host(可多个) + # 将后续所有非开头带 "--" 的参数视为RPC地址(可多个) shift while [[ $# -gt 0 && ! $1 =~ ^-- ]]; do API_HOSTS+=("$1") @@ -113,20 +123,17 @@ while [[ $# -gt 0 ]]; do esac done -# 校验必填: acid, ackey, clusterid, api-host +# 校验必填: acid, ackey, clusterid, http-api if [[ -z "$ACID" || -z "$ACKEY" || -z "$CLUSTER_ID" ]]; then - echo "[ERROR] 用法: $0 --acid --ackey --clusterid [--grantid ] [--name ] [--groupid ] [--regionid ] [--dnsroutes ] [--api-host [HOST2]...] [--webinstall]" + echo "[ERROR] 用法: $0 --acid --ackey --clusterid --http-api [--grantid ] [--name ] [--groupid ] [--regionid ] [--dnsroutes ] [--api-host [RPC2]...] [--webinstall]" exit 1 fi -if [[ ${#API_HOSTS[@]} -eq 0 ]]; then - echo "[ERROR] 必须至少指定一个 --api-host" +if [[ -z "$HTTP_API" ]]; then + echo "[ERROR] 必须指定 --http-api " exit 1 fi -# 假设脚本中要选第一个 API_HOSTS[0] 作为获取 Token 的地址 -MAIN_API_HOST="${API_HOSTS[0]}" - ############################################################################### # 3. 获取本机 IPv4, 拼装默认名称 ############################################################################### @@ -145,12 +152,12 @@ if [[ -z "$NAME" ]]; then fi ############################################################################### -# 4. 获取 Token +# 4. 获取 Token (使用 HTTP_API) ############################################################################### echo "[INFO] 获取 Token..." get_token_resp=$(curl -s -X POST \ -H "Content-Type: application/json" \ - "$MAIN_API_HOST/APIAccessTokenService/getAPIAccessToken" \ + "$HTTP_API/APIAccessTokenService/getAPIAccessToken" \ -d '{ "type": "admin", "accessKeyId": "'"$ACID"'", @@ -206,7 +213,7 @@ EOF create_node_resp=$(curl -s -X POST \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: $TOKEN" \ - "$MAIN_API_HOST/NodeService/createNode" \ + "$HTTP_API/NodeService/createNode" \ -d "$create_node_payload" ) create_node_code=$(echo "$create_node_resp" | jq -r '.code') @@ -249,7 +256,7 @@ EOF create_ips_resp=$(curl -s -X POST \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: $TOKEN" \ - "$MAIN_API_HOST/NodeIPAddressService/createNodeIPAddresses" \ + "$HTTP_API/NodeIPAddressService/createNodeIPAddresses" \ -d "$create_ips_payload" ) create_ips_code=$(echo "$create_ips_resp" | jq -r '.code') @@ -267,7 +274,7 @@ echo "[INFO] 获取节点信息..." find_node_resp=$(curl -s -X POST \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: $TOKEN" \ - "$MAIN_API_HOST/NodeService/findEnabledNode" \ + "$HTTP_API/NodeService/findEnabledNode" \ -d '{ "nodeId": '"$NODE_ID"' }' @@ -298,7 +305,7 @@ EOF install_node_resp=$(curl -s -X POST \ -H "Content-Type: application/json" \ -H "X-Edge-Access-Token: $TOKEN" \ - "$MAIN_API_HOST/NodeService/installNode" \ + "$HTTP_API/NodeService/installNode" \ -d "$install_node_payload" ) install_node_code=$(echo "$install_node_resp" | jq -r '.code') @@ -308,8 +315,8 @@ EOF fi else - # -------------------- 非web面板安装 -------------------- # - echo "[INFO] 未指定 --webinstall,进入非web面板安装流程..." + # -------------------- 手动安装模式 -------------------- # + echo "[INFO] 未指定 --webinstall,进入手动安装流程..." if [[ ! -d /usr/local/goedge ]]; then sudo mkdir -p /usr/local/goedge @@ -331,18 +338,17 @@ else sudo unzip -o edge-node.zip - # 将多个 API_HOSTS 拼成 JSON 数组(如果需要) - # 例如:["https://1.2.3.4:8001","https://edge2.xxx.com:8001"] - # 这里只把它们转成空格->"",""简单写入 - # 当然也可保留只写API_HOSTS[0] - RPC_ENDPOINTS_JSON='[' - for ((i=0; i<${#API_HOSTS[@]}; i++)); do - RPC_ENDPOINTS_JSON+="\"${API_HOSTS[i]}\"" - if [[ $i -lt $(( ${#API_HOSTS[@]} - 1 )) ]]; then - RPC_ENDPOINTS_JSON+="," - fi - done - RPC_ENDPOINTS_JSON+=']' + RPC_ENDPOINTS_JSON='[]' + if [[ ${#API_HOSTS[@]} -gt 0 ]]; then + RPC_ENDPOINTS_JSON='[' + for ((i=0; i<${#API_HOSTS[@]}; i++)); do + RPC_ENDPOINTS_JSON+="\"${API_HOSTS[i]}\"" + if [[ $i -lt $(( ${#API_HOSTS[@]} - 1 )) ]]; then + RPC_ENDPOINTS_JSON+="," + fi + done + RPC_ENDPOINTS_JSON+=']' + fi if [[ ! -f /usr/local/goedge/edge-node/configs/api_node.yaml ]]; then sudo tee /usr/local/goedge/edge-node/configs/api_node.yaml >/dev/null <