generated from helmut/template
Initial commit: Zabbix scripts and Ansible deploy
This commit is contained in:
commit
c11297ccf2
|
|
@ -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,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
|
||||
|
|
@ -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\
|
||||
|
|
@ -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
|
||||
Loading…
Reference in New Issue