Программа для автоматизированного управления конфигурациями WAF
| .gitignore | ||
| api.go | ||
| ARCHITECTURE.md | ||
| config.go | ||
| containers_part1.go | ||
| containers_part2.go | ||
| DATABASE_SCHEMA.md | ||
| db.go | ||
| drain.go | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| main.go | ||
| nginx.go | ||
| ports.go | ||
| ptaf_processor.go | ||
| README.md | ||
| sw_processor.go | ||
| types.go | ||
| utils.go | ||
Magos
Программа для автоматизированного управления конфигурациями Angie, PTAF Nginx, SolidWall Nginx и Docker Compose.
Описание
Программа выполняет следующие задачи:
- Подключается к PostgreSQL БД (primary/secondary fallback)
- Определяет instances текущего хоста по hostname
- Для каждого клиента определяет WAF-вендор (PTAF или SolidWall)
- Для PTAF-клиентов:
- Проверяет наличие Docker-образа, при необходимости скачивает
- Выделяет свободные порты для контейнеров
- Генерирует конфигурационные файлы Angie и Nginx
- Создаёт docker-compose.yml и запускает контейнеры
- Управляет graceful drain при масштабировании и миграции
- Для SolidWall-клиентов:
- Генерирует конфигурационные файлы solidwall-nginx
- Выполняет reload solidwall-nginx при изменениях
- Поддерживает идемпотентность — повторный запуск без изменений в БД не вносит изменений
Конфигурация
Конфигурационный файл: /etc/magos/magos.env
# База данных
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-хостах необходимо зарезервировать диапазон портов:
# Добавить в /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-файл завис
# Просмотреть PID
cat /var/lock/ptaf-main.lock
# Если процесс не существует — magos удалит lock автоматически при следующем запуске
# Если процесс завис — завершить вручную
kill {PID} && rm /var/lock/ptaf-main.lock
Переназначить порты контейнера
rm /home/install/ptaf/{clientTitle}/{clientTitle}-ptaf-agent*/.ports.json
# При следующем запуске magos порты будут перевыделены
Принудительно пересоздать контейнер
# Удалить контейнер — magos создаст новый при следующем запуске
docker-compose -f /home/install/ptaf/{clientTitle}/{clientTitle}-ptaf-agent001/docker-compose.yml down