Яндекс.Метрика

Курс Zabbix: мониторинг Asterisk и VoIP

Курс Zabbix: мониторинг Asterisk и VoIP с 8 сентября по 12 сентября

Количество
свободных мест

8 Записаться

Дистанционные курсы по Asterisk

Дистанционные курсы по Asterisk с 18 августа по 24 августа

Количество
свободных мест

2 Записаться

Курсы по Mikrotik MTCRE

Курсы по Mikrotik MTCRE с 8 декабря по 11 декабря

Количество
свободных мест

6 Записаться
Деплой Asterisk с помощью 1 команды
27
Доклад
Евгений Гостьков
Деплой Asterisk с помощью 1 команды
скачать презентацию

Деплой Asterisk с помощью 1 команды

В данном докладе рассматривается автоматизация развёртывания Asterisk с помощью одной команды с использованием Ansible. Описан подход к подготовке окружения, установке сервера и упрощению рутинных операций.

Проблематика при ручной установке Asterisk

По официальной документации необходимо скачать исходники, выполнить make menuselect, выбрать нужные модули, установить дополнительные зависимости (dev‑библиотеки для кодеков и прочие инструменты) и запустить сборку. Альтернативный вариант — установка из репозиториев ОС.
Оба подхода имеют недостатки при масштабировании:

  • Засорение системы инструментами сборки.
  • Необходимость повторять одни и те же действия на десятках хостов вручную.
  • Отсутствие единого представления о том, какие пакеты, скрипты и демоны установлены на каждом сервере.
  • Зависимость от устаревшей документации или от знаний одного администратора, что приводит к потере времени при настройке новых машин.

Автоматизация подготовки окружения

Чтобы решить эти проблемы, рекомендуется использовать систему управления конфигурациями. Bash‑скрипты плохо подходят для крупных проектов из‑за сложности поддержки и отладки. На рынке наиболее популярны Ansible, Puppet и Chef:

  • Ansible (Python, безагентная архитектура) — настройки выполняются по SSH, достаточно учётной записи с правами sudo.
  • Puppet (Ruby, клиент‑сервер) — требует выделенного Puppet‑сервера и агентов на узлах.
  • Chef (Ruby, клиент‑сервер) — аналогично Puppet.

Выбор Ansible обусловлен простотой: плейбуки на YAML, встроенный шаблонизатор Jinja2, отсутствие необходимости развертывать центральный сервер.

Пример простого Ansible‑плейбука для Asterisk

- hosts: asterisk
  become: true
  tasks:
    - name: Установить пакеты Asterisk
      apt:
        name:
          - asterisk
          - asterisk-config
          - asterisk-modules
          - asterisk-sounds
        state: present
    - name: Развернуть SIP конфигурацию
      template:
        src: templates/sip.conf.j2
        dest: /etc/asterisk/sip.conf
      notify: Reload Asterisk
  handlers:
    - name: Reload Asterisk
      service:
        name: asterisk
        state: reloaded

В этом примере перечислены пакеты, установка которых проверяется модулем apt. Шаблон sip.conf.j2 заполняется переменными, при изменении конфигурации автоматически перезапускается служба Asterisk.

Генерация конфигурации SIP‑учётных записей

Для динамического создания SIP‑аккаунтов используется плейбук с переменной users, например:

vars:
  users:
    - name: user1
      secret: password1
    - name: user2
      secret: password2
tasks:
  - name: Сгенерировать SIP учётки
    template:
      src: templates/sip_users.conf.j2
      dest: /etc/asterisk/sip_users.conf
    notify: Reload Asterisk

В шаблоне Jinja2 достаточно цикла for user in users, чтобы получить все записи по списку.

Проверка и развёртывание

Перед применением рекомендуется:

  1. Прогнать линтер для проверки соответствия рекомендациям Ansible (именования задач, использования модулей вместо вызова shell-команд).
  2. Выполнить ansible-playbook —check для «сухого» прогона без изменений на хостах.
  3. Запустить ansible-playbook для реального применения. При необходимости можно увеличить число параллельных подключений (опция -f).

Для интеграции с CI/CD (Jenkins, GitLab) можно настроить три стадии:

  1. Сборка проекта и клонирование репозитория.
  2. Линтинг и проверка плейбуков.
  3. Развёртывание на целевых хостах с передачей параметров окружения и списков хостов.

Заключение

Автоматизация развёртывания Asterisk с помощью Ansible позволяет:

  • Единообразно готовить окружение и устанавливать зависимости.
  • Хранить конфигурации и шаблоны в системе контроля версий.
  • Быстро масштабировать инфраструктуру: в случае сбоя или появления новых хостов новое окружение разворачивается за считанные минуты.
  • Минимизировать человеческий фактор и время на рутинные операции.

Таким образом, использование Ansible значительно упрощает администрирование VoIP‑серверов на базе Asterisk и обеспечивает надёжность и повторяемость развёртывания.

Ежегодная конференция по Asterisk 2025!

Билеты уже в продаже!

Остались вопросы?

Я - Компаниец Никита, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

Наши
клиенты

Посмотреть все