Программа для автоматизированного управления конфигурациями WAF
Find a file
2026-06-03 16:07:28 +03:00
.gitignore Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
api.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
ARCHITECTURE.md Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
config.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
containers_part1.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
containers_part2.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
DATABASE_SCHEMA.md Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
db.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
drain.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
go.mod Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
go.sum Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
LICENSE Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
main.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
nginx.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
ports.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
ptaf_processor.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
README.md Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
sw_processor.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
types.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00
utils.go Added new docs and sid blocks 2026-06-03 16:07:28 +03:00

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

# База данных
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