55 lines
1.3 KiB
Bash
Executable File
55 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
set -euo pipefail
|
||
|
||
LOG_PREFIX="[AGENT-ENTRYPOINT]"
|
||
DNS_SCRIPT="/private/argus/etc/update-dns.sh"
|
||
DNS_CONF="/private/argus/etc/dns.conf"
|
||
TARGET_DOMAIN="master.argus.com"
|
||
|
||
log() {
|
||
echo "${LOG_PREFIX} $*"
|
||
}
|
||
|
||
# 中文提示:等待 bind 下发的 update-dns.sh 脚本
|
||
for _ in {1..30}; do
|
||
if [[ -x "$DNS_SCRIPT" ]]; then
|
||
break
|
||
fi
|
||
log "等待 update-dns.sh 准备就绪..."
|
||
sleep 1
|
||
done
|
||
|
||
if [[ -x "$DNS_SCRIPT" ]]; then
|
||
log "执行 update-dns.sh 更新容器 DNS"
|
||
while true; do
|
||
if "$DNS_SCRIPT"; then
|
||
log "update-dns.sh 执行成功"
|
||
break
|
||
fi
|
||
log "update-dns.sh 执行失败,3 秒后重试"
|
||
sleep 3
|
||
done
|
||
else
|
||
log "未获取到 update-dns.sh,使用镜像默认 DNS"
|
||
fi
|
||
|
||
# 中文提示:记录当前 dns.conf 内容,便于排查
|
||
if [[ -f "$DNS_CONF" ]]; then
|
||
log "dns.conf 内容: $(tr '\n' ' ' < "$DNS_CONF")"
|
||
else
|
||
log "dns.conf 暂未生成"
|
||
fi
|
||
|
||
# 中文提示:尝试解析 master 域名,失败不阻塞但会打日志
|
||
for _ in {1..30}; do
|
||
if getent hosts "$TARGET_DOMAIN" >/dev/null 2>&1; then
|
||
MASTER_IP=$(getent hosts "$TARGET_DOMAIN" | awk '{print $1}' | head -n 1)
|
||
log "master.argus.com 解析成功: $MASTER_IP"
|
||
break
|
||
fi
|
||
sleep 1
|
||
done
|
||
|
||
log "启动 argus-agent"
|
||
exec /usr/local/bin/argus-agent
|