net-backup/README.md

69 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Network devices backup.
Скрипт на python для автоматизации сбора backup с сетевых устройств.
Используется:
- Python 3.13
- "gitpython>=3.1.44" - для работы с гитом
- "netmiko>=4.5.0" - для подключения к сетевым устройствам
- "schedule>=1.2.2" - для периодического выполнения backup
## Описание работы:
После запуска клонирует удалённый репозиторий.
Проходит по списку устройств, подключается по ssh и получает backup.
Если есть изменения в конфиге - делает комит в локальный репозиторий.
Пушит все комиты в удалённый репозиторий.
Повторяет раз в сутки в указанное время.
## Возможности
- Сбор backup с mikrotik, snr, cisco(ios), ряд моделей cisco small business
- Удаление локального гит репозитория полсе пуша в удалённый.
- Разбивать бэкапы по папкам внутри репозитория (по регулярному выражению от имени хоста)
- Отправлять оповещение на почту, если есть ошибки при снятии бэкапов.
- Работать локально, без пуша в удалённый репозиторий
## Использование
### Docker
Для запуска
- Создать папку для проекта.
- Внутри папки создать:
- - Файл docker-compose.yaml
- - Папку logs (в эту папку будут писаться логи)
- - Папку config (в этой папке будет конфиг файл и список сетевых устройств)
- - Папку backups (в этой папке будет git репозиторий с backup-ами )
Пример docker-compose файла: app/docker/docker-compose.yaml
Закомментированные переменные нужны, только в случае, если используются соответствующие функции.
```yaml
services:
net-backup:
image: git.sm8255082.ru/osnova/net-backup:1.2.0
restart: "no"
volumes:
- ./logs:/app/logs
- ./config:/app/config
- ./backups:/app/backups
environment:
- TZ=Europe/Moscow # Часовой пояс.
- NET_DEV_USER=admin # Имя пользователя для подключаться к устройствам.
#- NET_DEV_DOMAIN=local # Домен, если используется доменная учётная запись.
- NET_DEV_PWD=password # Пароль от УЗ для подключения к устройствам.
#- GIT_USERNAME=git_user # Название токена, используемого для пуша коммитов в gitlab.
#- GIT_TOKEN=bla-bla-lba # Токен, используемый для пуша коммитов в gitlab.
#- MAIL_USER=mail_user # Пользователь для авторизации на smtp сервере
#- MAIL_PWD=bla-bla-lba # Пароль для авторизации на smtp сервере
```
### Настройка
В папке config:
- Создать файл config.ini (пример содержимого app/config/config-template.ini)
- Создать файл dev_list.txt (список устройств)
Пример содержимого dev_list.txt, которое попадёт под регулярное выражение по умолчанию.
```text
HOME-GW01 192.168.254.1 MikroTik RB5009UPr+S+
HOME-ASW02 192.168.250.202 MikroTik CRS310-8G+2S+
```