apisix/ssl_manager/certbot_deploy_hook.sh

40 lines
902 B
Bash
Executable File

#!/bin/bash
# Certbot 部署钩子脚本
# 当证书申请或续期成功后,自动同步到 APISIX
set -e
# 配置
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SSL_MANAGER="${SCRIPT_DIR}/ssl_manager.py"
LOG_FILE="/var/log/apisix-certbot-deploy.log"
# 日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"
}
# 获取域名(从 certbot 环境变量)
DOMAIN="${RENEWED_DOMAINS%% *}"
if [ -z "$DOMAIN" ]; then
# 尝试从证书路径获取
if [ -n "$RENEWED_LINEAGE" ]; then
DOMAIN=$(basename "$RENEWED_LINEAGE")
else
log "错误: 无法获取域名"
exit 1
fi
fi
log "开始部署证书到 APISIX: $DOMAIN"
# 调用 SSL 管理器同步证书
if python3 "$SSL_MANAGER" sync --domain "$DOMAIN"; then
log "证书部署成功: $DOMAIN"
exit 0
else
log "证书部署失败: $DOMAIN"
exit 1
fi