39 lines
1.2 KiB
Bash
Executable File
39 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
||
set -euo pipefail
|
||
|
||
ADDR="http://100.81.26.3:4646"
|
||
# 检查 NOMAD_TOKEN 是否设置,如果设置了,则准备好 Header
|
||
HDR=""
|
||
if [ -n "${NOMAD_TOKEN:-}" ]; then
|
||
HDR="-H "X-Nomad-Token: $NOMAD_TOKEN""
|
||
fi
|
||
|
||
echo "--- 节点列表 (Before) ---"
|
||
nomad node status -address="$ADDR"
|
||
|
||
echo
|
||
echo "--- 开始查找需要清理的旧节点 ---"
|
||
|
||
# 使用 jq 从 nomad node status 的 json 输出中精确查找
|
||
# 条件: 状态为 "down" 且 名称匹配列表
|
||
IDS_TO_PURGE=$(nomad node status -address="$ADDR" -json | jq -r '.[] | select(.Status == "down" and (.Name | test("^(ch3|ch2|ash1d|ash2e|semaphore)$"))) | .ID')
|
||
|
||
if [[ -z "$IDS_TO_PURGE" ]]; then
|
||
echo "✅ 未找到符合条件的 'down' 状态节点,无需清理。"
|
||
else
|
||
echo "以下是待清理的节点 ID:"
|
||
echo "$IDS_TO_PURGE"
|
||
echo
|
||
|
||
# 循环遍历 ID,使用 curl 调用 HTTP API 进行 purge
|
||
for NODE_ID in $IDS_TO_PURGE; do
|
||
echo "===> 正在清理节点: $NODE_ID"
|
||
# 构造 curl 命令,并使用 eval 来正确处理可能为空的 $HDR
|
||
cmd="curl -sS -XPOST $HDR -w ' -> HTTP %{http_code}\n' '$ADDR/v1/node/$NODE_ID/purge'"
|
||
eval $cmd
|
||
done
|
||
fi
|
||
|
||
echo
|
||
echo "--- 节点列表 (After) ---"
|
||
nomad node status -address="$ADDR" |