49 lines
1.9 KiB
Bash
49 lines
1.9 KiB
Bash
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
# ARM Client-CPU 安装脚本:
|
||
# - 导入 ARM CPU node 镜像
|
||
# - 启动 compose 中的 metric-cpu-node 服务
|
||
|
||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||
PKG_ROOT="$ROOT_DIR"
|
||
ENV_FILE="$PKG_ROOT/compose/.env"
|
||
COMPOSE_FILE="$PKG_ROOT/compose/docker-compose.yml"
|
||
|
||
info(){ echo -e "\033[34m[INSTALL-ARM-CLIENT]\033[0m $*"; }
|
||
err(){ echo -e "\033[31m[ERROR]\033[0m $*" >&2; }
|
||
|
||
require(){ local ok=1; for c in "$@"; do command -v "$c" >/dev/null 2>&1 || { err "缺少依赖: $c"; ok=0; }; done; [[ $ok -eq 1 ]]; }
|
||
|
||
require_compose(){
|
||
if docker compose version >/dev/null 2>&1; then return 0; fi
|
||
if command -v docker-compose >/dev/null 2>&1 && docker-compose version >/dev/null 2>&1; then return 0; fi
|
||
err "未检测到 Docker Compose,请安装 docker compose v2 或 docker-compose v1"; exit 1
|
||
}
|
||
|
||
require docker
|
||
require_compose
|
||
|
||
[[ -f "$ENV_FILE" ]] || { err "缺少 compose/.env,请先运行 scripts/config.sh"; exit 1; }
|
||
info "使用环境文件: $ENV_FILE"
|
||
|
||
set -a; source "$ENV_FILE"; set +a
|
||
|
||
# 导入 ARM CPU node 镜像
|
||
IMG_TGZ=$(ls -1 "$PKG_ROOT"/images/argus-sys-metric-test-node-arm64-*.tar.gz 2>/dev/null | head -1 || true)
|
||
[[ -n "$IMG_TGZ" ]] || { err "找不到 ARM CPU node 镜像 tar.gz(argus-sys-metric-test-node-arm64-*.tar.gz)"; exit 1; }
|
||
info "导入 ARM CPU node 镜像: $(basename "$IMG_TGZ")"
|
||
tmp=$(mktemp); gunzip -c "$IMG_TGZ" > "$tmp"; docker load -i "$tmp" >/dev/null; rm -f "$tmp"
|
||
|
||
# 确保 agent 挂载目录存在
|
||
mkdir -p "$PKG_ROOT/private/argus/agent"
|
||
|
||
# 启动 compose
|
||
PROJECT="${COMPOSE_PROJECT_NAME:-argus-client-arm}"
|
||
info "启动 ARM CPU 节点 (docker compose -p $PROJECT up -d)"
|
||
docker compose -p "$PROJECT" --env-file "$ENV_FILE" -f "$COMPOSE_FILE" up -d
|
||
docker compose -p "$PROJECT" --env-file "$ENV_FILE" -f "$COMPOSE_FILE" ps
|
||
|
||
info "ARM Client-CPU 安装完成。可通过 docker logs -f argus-metric-cpu-node 查看节点容器日志。"
|
||
|