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