Как собирать SIP-стек из Ansible и Docker без ручной настройки и хаоса
Когда Asterisk, Kamailio, RTP-прокси и мониторинг живут в разных контейнерах, ручной запуск быстро превращается в источник дрейфа конфигураций. Ansible должен не «ставить софт», а собирать предсказуемый стек: сети, тома, secrets, шаблоны конфигов и порядок старта сервисов.
Разделяйте обязанности: Docker отвечает за изоляцию процесса и воспроизводимость образа, Ansible — за оркестрацию узла и заполнение параметров. Для телефонии критично описывать отдельно SIP-сеть, media-сеть и управление: docker network, статические адреса, NAT-параметры, маршруты до SBC и RTP-диапазоны. Иначе получите рабочий SIP без аудио.
В playbook держите три слоя: group_vars для общих параметров кластера, шаблоны jinja2 для sip.conf, pjsip.conf, rtpengine.conf, и handlers для рестарта только после изменения конфига. Контейнеры не должны хранить состояние вызова: CDR, записи, логи и статусы очередей выносите в volume или внешнюю БД. Это упрощает откат и масштабирование 🔧
Минимальный паттерн: Ansible поднимает сеть и volume, рендерит конфиги, запускает контейнеры в нужной последовательности, затем выполняет health-check по SIP OPTIONS и тест RTP. Если проверка не проходит, деплой считается неуспешным, даже если контейнер «healthy».
Отказоустойчивость — это не роскошь, а базовое требование к SIP-платформе. Автоматизируйте не запуск контейнеров, а сборку всей телефонии как кода: тогда замена узла не превратится в ночной ручной ритуал.
Работа с API телефонии
@phone_api_gateway_arb
Как собирать SIP-стек из Ansible и Docker без ручной настройки и хаоса
Этот пост опубликован в Telegram-канале Работа с API телефонии. Подписаться можно по ссылке: @phone_api_gateway_arb.