magos/README.md

88 lines
3.4 KiB
Markdown
Executable file

# Magos
Программа для автоматизированного управления конфигурациями Angie, PTAF Nginx, SolidWall Nginx и Docker Compose.
## Описание
Программа выполняет следующие задачи:
1. Подключается к PostgreSQL БД (primary/secondary fallback)
2. Определяет instances текущего хоста по hostname
3. Для каждого клиента определяет WAF-вендор (PTAF или SolidWall)
4. **Для PTAF-клиентов:**
- Проверяет наличие Docker-образа, при необходимости скачивает
- Выделяет свободные порты для контейнеров
- Генерирует конфигурационные файлы Angie и Nginx
- Создаёт docker-compose.yml и запускает контейнеры
- Управляет graceful drain при масштабировании и миграции
5. **Для SolidWall-клиентов:**
- Генерирует конфигурационные файлы solidwall-nginx
- Выполняет reload solidwall-nginx при изменениях
6. Поддерживает идемпотентность — повторный запуск без изменений в БД не вносит изменений
## Конфигурация
Конфигурационный файл: `/etc/magos/magos.env`
```bash
# База данных
DB_USER=login
DB_PASSWORD=password
DB_NAME=waf_info
DB_PORT=5432
PRIMARY_DB_HOST=10.100.10.8
SECONDARY_DB_HOST=10.100.13.5
# Docker-образ PTAF (глобальный)
DOCKER_IMAGE=ptaf-core-nginx-agent:release-4.3.1.431839-debian-bullseye-nginx-1.28.0
DOCKER_IMAGE_URL=https://example.com/image.tar
# Параметры Nginx
WORKER_PROCESSES=4
WORKER_CONNECTIONS=64000
```
## Требования к хосту
Для корректной работы на PTAF-хостах необходимо зарезервировать диапазон портов:
```bash
# Добавить в /etc/sysctl.conf
net.ipv4.ip_local_reserved_ports=18000-23999
# Применить немедленно
sysctl -w net.ipv4.ip_local_reserved_ports=18000-23999
```
## Подробности
Изучить как работает программа можно в файле **ARCHITECTURE.md**.
Посмотреть зависимость работы программы от БД в файле **DATABASE_SCHEMA.md**.
## Диагностика
### Lock-файл завис
```bash
# Просмотреть PID
cat /var/lock/ptaf-main.lock
# Если процесс не существует — magos удалит lock автоматически при следующем запуске
# Если процесс завис — завершить вручную
kill {PID} && rm /var/lock/ptaf-main.lock
```
### Переназначить порты контейнера
```bash
rm /home/install/ptaf/{clientTitle}/{clientTitle}-ptaf-agent*/.ports.json
# При следующем запуске magos порты будут перевыделены
```
### Принудительно пересоздать контейнер
```bash
# Удалить контейнер — magos создаст новый при следующем запуске
docker-compose -f /home/install/ptaf/{clientTitle}/{clientTitle}-ptaf-agent001/docker-compose.yml down
```