# 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 ```