Initial commit: Zabbix scripts and Ansible deploy

This commit is contained in:
Windneiro 2026-03-31 13:01:25 +05:00
commit c11297ccf2
5 changed files with 110 additions and 0 deletions

View File

@ -0,0 +1,19 @@
name: Remote Deploy to Windows
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run Ansible Playbook
env:
# Пароли лучше хранить в Secrets Gitea
ANSIBLE_NETCONF_PASSWORD: ${{ secrets.WINRM_PASSWORD }}
run: |
cd ansible
ansible-playbook -i inventory.ini playbook.yml

0
README.md Normal file
View File

9
ansible/inventory.ini Normal file
View File

@ -0,0 +1,9 @@
[windows]
GUFK_ISERVER ansible_host=192.168.1.2
[windows:vars]
ansible_user=admin@efgufk.com
ansible_password=Sj032ssa!
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
ansible_port=5985

8
ansible/playbook.yml Normal file
View File

@ -0,0 +1,8 @@
---
- name: Deploy FreeFileSync tasks to Windows servers
hosts: windows
tasks:
- name: Copy backup scripts
ansible.windows.win_copy:
src: ../scripts/
dest: C:\CMD\

View File

@ -0,0 +1,74 @@
@echo off
chcp 65001
setlocal enabledelayedexpansion
echo Запуск универсальной синхронизации FreeFileSync...
echo.
:: --- НАСТРОЙКИ ---
set "FFS_PATH=C:\Program Files\FreeFileSync\FreeFileSync.exe"
set "Z_SENDER=C:\Program Files\Zabbix Agent\zabbix_sender.exe"
set "Z_SERVER=192.168.14.7"
:: --- ЛОГИКА ИМЕНИ ХОСТА ---
set "Z_HOSTNAME={{ inventory_hostname }}"
:: TLS параметры (убедись, что кавычки внутри кавычек не ломают строку)
set Z_TLS=--tls-connect psk --tls-psk-identity "%Z_HOSTNAME%" --tls-psk-file "C:\Program Files\Zabbix Agent\psk.key"
:: Путь к логам
set "LOG_DIR=%~dp0Logs"
if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
:: 1. СБОР СПИСКА ФАЙЛОВ И ОТПРАВКА DISCOVERY
echo Поиск файлов .ffs_batch в %~dp0...
set "JSON={\"data\":["
set "first=1"
:: Собираем JSON для Zabbix
for %%F in ("%~dp0*.ffs_batch") do (
if !first! == 0 (set "JSON=!JSON!,")
set "JSON=!JSON!{\"{#FFS_NAME}\":\"%%~nF\"}"
set "first=0"
)
set "JSON=!JSON!]}"
if !first! == 1 (
echo [%date% %time%] Ошибка: Файлы .ffs_batch не найдены! >> "%LOG_DIR%\sync_errors.log"
exit /b 1
)
echo Отправка списка задач в Zabbix для автообнаружения...
"%Z_SENDER%" %Z_TLS% -z %Z_SERVER% -s "%Z_HOSTNAME%" -k ffs.discovery -o "%JSON%"
echo Ожидание синхронизации Zabbix (30 сек)...
timeout /t 30 /nobreak >nul
:: 2. ОСНОВНОЙ ЦИКЛ ЗАПУСКА
:: Используем поиск файлов напрямую в цикле, чтобы избежать проблем с переменной FOUND_TASKS
for %%F in ("%~dp0*.ffs_batch") do (
set "T=%%~nF"
echo -------------------------------------------
echo Запуск задачи: !T!...
:: Запуск FreeFileSync
"%FFS_PATH%" "%%F"
:: Сохраняем код возврата
set "RET_CODE=!errorlevel!"
echo Задача !T! завершена с кодом !RET_CODE!. Отправка в Zabbix...
:: Отправка в Zabbix
"%Z_SENDER%" %Z_TLS% -z %Z_SERVER% -s "%Z_HOSTNAME%" -k ffs.status[!T!] -o !RET_CODE! -vv
:: Безопасное логирование без использования ELSE внутри скобок цикла
echo [%date% %time%] !T! завершен с кодом !RET_CODE! >> "%LOG_DIR%\sync_log.txt"
if !RET_CODE! NEQ 0 (
echo [%date% %time%] !T! ошибка !RET_CODE! >> "%LOG_DIR%\sync_errors.log"
)
)
echo.
echo Все найденные задачи выполнены.
pause