[Auto-Sync] Atualização das configurações em srvproxy001.itguys.com.br - 2025-09-16 19:07:21
This commit is contained in:
parent
eaa88b5797
commit
86dd891052
|
|
@ -0,0 +1,4 @@
|
||||||
|
# Adicione aqui os caminhos completos para os ficheiros e diretórios que deseja versionar, um por linha.
|
||||||
|
# Linhas que começam com '#' são ignoradas.
|
||||||
|
/etc/nginx
|
||||||
|
/etc/fail2ban
|
||||||
|
|
@ -1,40 +1,60 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
REPO_PATH="/opt/config_repo"
|
REPO_PATH="/opt/config_repo"
|
||||||
NGINX_SOURCE="/etc/nginx"
|
CONFIG_DIR="/etc/proxy-sinc"
|
||||||
FAIL2BAN_SOURCE="/etc/fail2ban"
|
PATHS_FILE="${CONFIG_DIR}/paths.conf"
|
||||||
AUTOMATION_FILES_SOURCE=("/usr/local/sbin/commit_configs.sh" "/etc/systemd/system/proxy-sinc.service" "/etc/systemd/system/proxy-sinc.timer" "/usr/share/man/man8/proxy-sinc.8.gz")
|
AUTOMATION_FILES_SOURCE=("/usr/local/sbin/commit_configs.sh" "/usr/local/sbin/proxy-sinc-update" "/etc/systemd/system/proxy-sinc.service" "/etc/systemd/system/proxy-sinc.timer" "/usr/share/man/man8/proxy-sinc.8.gz" "${PATHS_FILE}")
|
||||||
AUTOMATION_FILES_DEST="$REPO_PATH/_automation_scripts/"
|
AUTOMATION_FILES_DEST="$REPO_PATH/_automation_scripts/"
|
||||||
echo "--- Iniciando a verificação de sincronização de configurações [$(date)] ---"
|
|
||||||
if [ "$EUID" -ne 0 ]; then echo "ERRO CRÍTICO: O script deve ser executado como root." >&2; exit 1; fi
|
log_info() { echo "[INFO] $1"; }
|
||||||
if [ ! -d "$REPO_PATH" ]; then echo "ERRO CRÍTICO: O diretório do repositório $REPO_PATH não foi encontrado." >&2; exit 1; fi
|
|
||||||
echo "[INFO] Sincronizando ficheiros de configuração..."
|
log_info "--- Iniciando a verificação de sincronização [$(date)] ---"
|
||||||
rsync -avz --delete --exclude='*.swp' --exclude='*.bak' --exclude='sites-enabled/' --exclude='modules-enabled/' --exclude='/var/log/' --exclude='/var/run/' --exclude='/var/cache/' "$NGINX_SOURCE/" "$REPO_PATH/nginx/"
|
if [ "$EUID" -ne 0 ]; then echo "[ERRO] O script deve ser executado como root." >&2; exit 1; fi
|
||||||
rsync -avz --delete --exclude='*.swp' --exclude='*.bak' --exclude='/var/log/' --exclude='/var/run/' "$FAIL2BAN_SOURCE/" "$REPO_PATH/fail2ban/"
|
if [ ! -d "$REPO_PATH/.git" ]; then echo "[ERRO] O diretório do repositório $REPO_PATH não é um repositório Git válido." >&2; exit 1; fi
|
||||||
echo "[INFO] Sincronizando ficheiros de automação..."
|
|
||||||
|
log_info "Sincronizando ficheiros de configuração definidos em $PATHS_FILE..."
|
||||||
|
if [ ! -f "$PATHS_FILE" ]; then
|
||||||
|
echo "[AVISO] O ficheiro de caminhos $PATHS_FILE não foi encontrado. Nenhum ficheiro de configuração foi sincronizado."
|
||||||
|
else
|
||||||
|
while IFS= read -r path_to_sync || [ -n "$path_to_sync" ]; do
|
||||||
|
if [ -z "$path_to_sync" ] || [[ "$path_to_sync" =~ ^# ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -e "$path_to_sync" ]; then
|
||||||
|
# Copia para a raiz do repositório
|
||||||
|
rsync -avz --delete --exclude='*.swp' --exclude='*.bak' --exclude='sites-enabled/' --exclude='modules-enabled/' --exclude='/var/log/' --exclude='/var/run/' --exclude='/var/cache/' "$path_to_sync" "$REPO_PATH/"
|
||||||
|
else
|
||||||
|
echo "[AVISO] O caminho '$path_to_sync' definido em $PATHS_FILE não existe. A ignorar."
|
||||||
|
fi
|
||||||
|
done < "$PATHS_FILE"
|
||||||
|
fi
|
||||||
|
|
||||||
|
log_info "Sincronizando ficheiros de automação..."
|
||||||
mkdir -p "$AUTOMATION_FILES_DEST"
|
mkdir -p "$AUTOMATION_FILES_DEST"
|
||||||
for file in "${AUTOMATION_FILES_SOURCE[@]}"; do
|
for file in "${AUTOMATION_FILES_SOURCE[@]}"; do
|
||||||
if [ -f "$file" ]; then
|
if [ -f "$file" ]; then
|
||||||
rsync -aR "$file" "$AUTOMATION_FILES_DEST"
|
rsync -aR "$file" "$AUTOMATION_FILES_DEST"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
echo "[INFO] Sincronização de ficheiros concluída."
|
|
||||||
cd "$REPO_PATH"
|
cd "$REPO_PATH"
|
||||||
echo "[INFO] A verificar o status do repositório Git..."
|
log_info "A verificar o status do repositório Git..."
|
||||||
if [ -n "$(git status --porcelain)" ]; then
|
if [ -n "$(git status --porcelain)" ]; then
|
||||||
echo "[INFO] Alterações detetadas. A preparar o commit."
|
log_info "Alterações detetadas. A preparar o commit."
|
||||||
echo "[INFO] A puxar alterações do repositório remoto para evitar conflitos..."
|
log_info "A puxar alterações do repositório remoto para evitar conflitos..."
|
||||||
git pull --ff-only
|
git pull --ff-only
|
||||||
echo "[INFO] A adicionar alterações ao stage..."
|
log_info "A adicionar alterações ao stage..."
|
||||||
git add .
|
git add .
|
||||||
COMMIT_MESSAGE="[Auto-Sync] Atualização das configurações em $(hostname -f) - $(date +'%Y-%m-%d %H:%M:%S')"
|
COMMIT_MESSAGE="[Auto-Sync] Atualização das configurações em $(hostname -f) - $(date +'%Y-%m-%d %H:%M:%S')"
|
||||||
echo "[INFO] A fazer o commit com a mensagem: $COMMIT_MESSAGE"
|
log_info "A fazer o commit com a mensagem: $COMMIT_MESSAGE"
|
||||||
git commit -m "$COMMIT_MESSAGE"
|
git commit -m "$COMMIT_MESSAGE"
|
||||||
echo "[INFO] A enviar as alterações para o Gitea (git push)..."
|
log_info "A enviar as alterações para o Gitea (git push)..."
|
||||||
git push origin main
|
git push origin main
|
||||||
echo "[SUCESSO] As alterações foram enviadas para o repositório remoto!"
|
echo "[SUCESSO] As alterações foram enviadas para o repositório remoto!"
|
||||||
else
|
else
|
||||||
echo "[INFO] Nenhuma alteração de configuração detetada. O repositório está atualizado."
|
log_info "Nenhuma alteração de configuração detetada. O repositório está atualizado."
|
||||||
fi
|
fi
|
||||||
echo "--- Verificação de sincronização concluída com sucesso [$(date)] ---"
|
log_info "--- Verificação de sincronização concluída [$(date)] ---"
|
||||||
exit 0
|
exit 0
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
echo "A procurar por atualizações para o serviço Proxy-Sinc..."
|
||||||
|
UPDATE_SCRIPT_URL="https://git.itguys.com.br/joao.goncalves/NgixProxy_Pathfinder/raw/branch/main/Instal-Proxy-Sinc.sh"
|
||||||
|
TEMP_SCRIPT="/tmp/setup_latest.sh"
|
||||||
|
|
||||||
|
echo "A baixar a versão mais recente do instalador de: $UPDATE_SCRIPT_URL"
|
||||||
|
|
||||||
|
SSL_VERIFY_FLAG=""
|
||||||
|
if [ -d "/opt/config_repo/.git" ]; then
|
||||||
|
if [ "$(cd /opt/config_repo && git config --get http.sslVerify)" == "false" ]; then
|
||||||
|
SSL_VERIFY_FLAG="--insecure"
|
||||||
|
echo "[AVISO] A usar o modo inseguro para baixar a atualização devido à configuração do repositório."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if curl $SSL_VERIFY_FLAG -L "$UPDATE_SCRIPT_URL" -o "$TEMP_SCRIPT"; then
|
||||||
|
chmod +x "$TEMP_SCRIPT"
|
||||||
|
echo "Instalador baixado com sucesso. A executar a atualização..."
|
||||||
|
sudo "$TEMP_SCRIPT"
|
||||||
|
rm "$TEMP_SCRIPT"
|
||||||
|
echo "Atualização concluída!"
|
||||||
|
else
|
||||||
|
echo "ERRO: Falha ao baixar o script de atualização." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
Binary file not shown.
Loading…
Reference in New Issue