Support up to 3 strategy slots on one host with auto ports.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-08-01 23:33:41 +08:00
parent 9c515644a3
commit aab0b9bdf6
8 changed files with 503 additions and 200 deletions
+51 -6
View File
@@ -182,13 +182,15 @@ show_banner() {
}
show_menu() {
echo " 1) 一键部署策略机"
echo " 1) 一键部署策略机(可选槽位 1/2/3"
echo " 2) 一键部署中控机"
echo " 3) 一键卸载"
echo " 4) 更新策略机"
echo " 3) 一键卸载策略机(选槽位)"
echo " 4) 更新策略机(选槽位 / 全部)"
echo " 5) 更新中控机"
echo " 0) 退出"
echo ""
echo " 槽位: 1→:5155 2→:5156 3→:5157(同机最多三套,实盘请只用 1)"
echo ""
}
# 交互读入(兼容 curl|bash
@@ -224,6 +226,42 @@ deploy_control_node() {
log "中控部署完成 → http://<本机IP>:5160 默认账号 admin / admin123"
}
run_with_slot_env() {
# 子脚本继承当前槽位变量
env \
INSTANCE_SLOT="${INSTANCE_SLOT}" \
INSTALL_ROOT="${INSTALL_ROOT}" \
API_PORT="${API_PORT}" \
PM2_APP_NAME="${PM2_APP_NAME}" \
SKIP_SLOT_PROMPT=1 \
EHS_FROM_MANAGE=1 \
"$@"
}
prompt_update_target() {
local line=""
echo ""
echo "更新目标:"
echo " 1/2/3) 指定槽位"
echo " a) 全部已安装槽位(串行,适合 2G 测机)"
cm_read line "请选择 [1/2/3/a,默认1]: "
line="${line:-1}"
case "${line}" in
a|A|all|ALL)
EHS_UPDATE_MODE=all
;;
1|2|3)
EHS_UPDATE_MODE=one
resolve_slot "${line}"
;;
*)
echo "无效选择,使用槽位 1"
EHS_UPDATE_MODE=one
resolve_slot 1
;;
esac
}
main_menu() {
bootstrap_repo
# shellcheck source=lib/common.sh
@@ -237,16 +275,23 @@ main_menu() {
cm_read choice "请选择 [0-5]: "
case "${choice}" in
1)
bash "${LIB_DIR}/install.sh"
prompt_instance_slot
run_with_slot_env bash "${LIB_DIR}/install.sh"
;;
2)
deploy_control_node
;;
3)
bash "${LIB_DIR}/uninstall.sh"
prompt_instance_slot
run_with_slot_env bash "${LIB_DIR}/uninstall.sh"
;;
4)
bash "${LIB_DIR}/update.sh"
prompt_update_target
if [[ "${EHS_UPDATE_MODE}" == "all" ]]; then
env EHS_UPDATE_MODE=all SKIP_SLOT_PROMPT=1 bash "${LIB_DIR}/update.sh"
else
run_with_slot_env bash "${LIB_DIR}/update.sh"
fi
;;
5)
deploy_control_node