vestasync/README.md
2023-04-16 14:03:21 +07:00

84 lines
5.9 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.

# Vestasync
Vestasync - это ПО для бекапа и восстановления контроллеров Wirenboard. Оно решает две задачи:
1. Создание бекапа конфигурации автоматически и деплой ее на удаленный git-сервер (поддерживается Gitea, для поддержки других сервисов необходимо дописать соответствующую функцию создания репозитория) по расписанию (раз в день)
2. Восстановление бекапа одной командой: после подключения нового контроллера достаточно ввести его IP и имя хоста предыдущего контроллера, чтобы Vestasync автоматически восстановила бекап вплоть до MAC-адресов сетевых интерфейсов, чтобы не было нужды менять настройки на DHCP-сервере. После перезагрузки контроллер вернется в сеть с IP старого контроллера.
## Установка
```bash
git clone https://github.com/vvzvlad/vestasync
cd vestasync
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
## Команды
Vestasync поддерживает три команды: `install`, `update` и `restore`.
### install
Команда `install` выполняет подготовительные действия.
Пример запуска:
```bash
./vestasync.py
--cmd install
--device_ip 192.168.1.85
--gitea_address http://192.168.1.101:3001/
--device_new_name WB2
--gitea_token de8a2eaee0d2f27746157c2fd563815f932d670c`
```
--cmd install: означает, что надо установить Vestasync на контроллер и подготовить его к созданию бекапа
--device_ip: IP-адрес контроллера
--gitea_address: адрес Gitea-сервера, куда будет отправлен бекап в виде "http://192.168.1.101:3001/"
--device_new_name: имя контроллера, из которого вместе с SN будет сформировано название контроллера, которое запишется в хостнейм и будет служить именем репозитария с конфигами
--gitea_token: токен для авторизации на Gitea-сервере (получается в интерфейсе)
### restore
Команда `restore` выполняет восстановление существующего бекапа на контроллере.
Пример запуска:
```bash
./vestasync.py
--cmd restore
--device_ip 192.168.98.85
--gitea_address http://192.168.1.101:3001/
--gitea_token de8a2eaee0d2f27746157c2fd563815f932d670c`
--source_hostname WB2-A3TBJXLS
```
Используются те же аргументы, что и в install, но дополнительно еще нужен аругмент source_hostname, который определяет имя контроллера, с которого выполняется бекап. device_new_name не используетс, в качестве имени будет взято имя старого контроллера.
## Службы
Службы, которые будут запущенны на контроллере при установке:
### Восстановление MAC-адресов (apply_macs)
Служба apply_macs отвечает за применение MAC-адресов к сетевым интерфейсам при загрузке системы.
Эта служба считывает MAC-адреса из файлов, расположенных в каталоге /mnt/data/etc/vestasync/macs/, если они есть, и присваивает их соответствующим интерфейсам, таким как eth0, eth1, wlan0 и т. д. Это используется, если на контроллер был восстанновлен созданный бекап, чтобы сохранять MAC-адреса старого контроллера, и соотвественно, адрес, выданный DHCP.
Для изменения MAC-адресов на изначальные надо просто удалить все файлы и перезагрузиться:
```
rm -rf /mnt/data/etc/vestasync/macs/*
reboot
```
Или, если надо сделать это временно, остановить службу: ```systemctl stop apply_macs.service```
Обратно запустить: ```systemctl start apply_macs.service```
Узнать статус: ```systemctl status apply_macs.service```
### Автоматическое версионирование и деплой конфигов (pushgit)
Служба pushgit работает в паре с таймером pushgit.timer. Они обеспечивают автоматическое сохранение конфигов в репозиторий Git на удаленном сервере ежедневно.
Это позволяет сохранять изменения в файлах и версионировать их, что упрощает управление конфигурационными файлами и предотвращает потерю данных при их случайном изменении или удалении.
Чтобы отключить сохранение, надо остановить службу: ```systemctl stop pushgit.timer```
Запуск и проверка статуса аналогично предыдущей:
Запустить: ``` systemctl start pushgit.timer```
Узнать статус: ```systemctl status pushgit.timer```