Autoprovision processor (ap)

Описание

Процессор автопровижена. Обрабатывает запросы от устройств, поступающие по протоколам TFTP и PNP.

Резервируется. Active-Active применяется для процессов TFTP. Active-Passive для процессов PNP и управления кэшем MAC-адресов.

При поступлении TFTP запроса первым делом ищет готовый файл в каталоге :SYNC/common/autoprovision/configurations (управление доступно также через REST-API мастер-домена /rest/v1/fs/targets/ap_configurations).
Если файл не обнаружен, то делается попытка обнаружить шаблон, заполнть и вернуть.
1. Из имени файла выделяется MAC-адрес.
2. По MAC обнаруживается учетная запись sipuser (поле `opts.ap_devices.mac или opts.ap_mac_address`). Поиск производится во всех доменах.
3. По имени файла обнаруживается маска имени шаблона в `MasterDomain.settings.ap_options.masks`. Возможно маска содержит тип, тогда при поиске шаблона он выступает конечным расширением файла.
4. По учетной записи определяется модель устройства (поле `opts.ap_devices.device_model bkb opts.ap_device_model`).
5. На основании типа из маски имени шаблона и обнаруженной модели устройства ищется шаблон настроек autoprovision (размещается в каталоге :SYNC/common/autoprovision/templates и доступны через REST-API /rest/v1/fs/targets/ap_templates).
6. Шаблон рассматривается как текстовый файл или xml. Шаблон заполняется значениями из учетной записи sipuser, констант домена (`Domain.settings.ap_constants`), констант мастер-домена (`MasterDomain.settings.ap_constants`), констант сайта (`:SYNC/common/autoprovision/constants/<SiteName>.cfg`), Раздел [blf] - заполняется через кратную подстановку шаблона для BLF, взятого для обнаруженной модели устройства и заполненного на основании списка (поле `opts.ap_devices.blf или ext.ap_blf`).
7. Шаблон дополняется или корректируется индивидуальными настройками (поле `opts.ap_devices.override` или `ext.ap_override`). Результат возвращается устройству для проведения автонастройки.
.
При необходимости обеспечить скачивание прошивок и других файлов, не зависящих от MAC-адреса, их следует разместить в каталог статических конфигураций.
.
Возвращает файл по TFTP и удаляет его сразу же (в случае PNP уведомляет устройство сообщая временный URL на вебсервере).

Шаблон применяется несколько раз до полного завершения подстановки, позволяя таким образом производить глубокие вложения файлов.

Table 1. Системные характеристики

Код

ap

Режим работы

Сервис

Режим резервирования

Active-Active (для TFTP), Active-Passive (для PNP и управления кэшем MAC-адресов).

Типы сайтов

Любые

Слой

Бизнес-логика

Размещение

Внутренний или пограничный (доступ с телефонных устройств)

Сохранение и восстановление состояния при перезагрузке

Нет

Приложение

era_ap

Ограничения

  • Для работы TFTP опция должна быть прописана на DHCP сервере.

  • PNP может обслуживать только устройства, находящиеся в сегменте сети, из которой сервер доступен для broadcast сообщений.

  • Специфика autoprovision индивидуальна для различных марок и моделей телефонов; подготовка системы к проведению автонастройки может потребовать предварительных усилий по тестированию и подготовке специфических шаблонов.

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

  • Безопасность PNP обеспечивается недоступностью broadcast-адреса сервера для других сегментов сети, а TFTP (по умолчанию порт 69) требует внимания, поскольку возможен перебор MAC-адресов. При установке сервера на публичном адресе следует рассмотреть возможность отключения роли autoprovision из конфигурации после проведения основной фазы настройки системы и распространения конфигурации на большинство абонентских устройств.

  • Сложные настройки (использование нескольких сип-серверов, зависимых от домена, настройка нескольких учетных записей на телефоне и т.д.) следует решать путем проектного создания специфических шаблонов.

Параметры

Table 2. Параметры
Имя Тип Умолчание Описание

name

str

required

Имя. Может состоять из латинских букв и цифр, должно начинаться с буквы.

roletype

str

required

Тип роли. Возможные значения: "ap".

iface

str

required

Алиас сетевого интерфейса сервера, на котором будет происходить внутреннее взаимодействие ролей между собой.

ext

json

empty

Дополнительные опции роли. Содержит json объект или список.

enabled

bool

empty

Флаг активности роли. При установке в false роль не участвует в валидации и не запускается.

tftp_port

int

69

Порт сервиса TFTP

pnp_url_proto

str

tftp

Протокол отдачи конфигураций при использовании PNP.
Возможные варианты: tftp, http. В первом случае файл отдается с TFTP сервера роли autoprovision, во втором случае - из временного файла на вебсервере.

group

int

required

Номер группы.
В рамках горизонтального масштабирования роль может быть разделена на несколько групп на сайте, в каждой из которых активен только один экземпляр, остальные зарезервированы.
Ответственность между группами разделяется по доменным множествам. Вместе все группы обслуживают полное доменное множество. Все роли одной группы должны иметь одинаковую ответственность.
Целое число от 1 до 9999999.

order

int

required

Порядок экземпляра роли в рамках группы.
Определяет в каком порядке будет происходить перетекание в режиме Active-Passive.

include_domains

array<str>

empty

Список имен доменов, которые обслуживает данная группа.
Может быть указан любой домен любого уровня. Указание домена приводит к тому, что дерево его поддоменов будет обслуживаться на этой группе и не будет обслуживаться на других группах роли, исключая только те ветви, которые упомянуты в других группах.
В совокупности все группы роли на сайте обслуживают полное дерево доменов.

Подстановочные поля в шаблонах

Table 3. Категории
Категория Описание

[sipuser.KEY]

подставляет значения полей учетной записи sipuser. Например [sipuser.login] или [sipuser.ext.my_obj.my_key].

[constants.domain]

подставляет имя домена учетной записи sipuser.

[constants.sg.addr]

подставляет адрес прокси сервера SG на текущем сайте. Более сложные настройки (специфический порт, множественная или распределенная адресация) должны обеспечиваться созданием специфических шаблонов в проекте перед проведением массового подключения устройств.

[constants.newid]

подставляет новый UUID, делая файл конфигурации уникальным всякий раз.

[constants.KEY]

подставляет значения констант. Константы берутся с понижением приоритета: 1) из настроек домена учетной записи (settings.ap_constants), 2) из настроек мастер-домена (settings.ap_constants), 3) из файла настроек сайта (:SYNC/common/autoprovision/constants/SITE.cfg, /rest/v1/fs/targets/ap_constants/SITE.cfg - где SITE - имя сайта обслуживающего запрос).

[nslookup.DOMAINNAME]

производит запрос nslookup указанного доменного имени и подставляет один из обнаруженных адресов. В случае кратного использования команды в шаблоне гарантирует подстановку разных значений. Может быть использовано для подстановки адресов NTP-серверов в случае отсутствия у телефонов доступа к сервису DNS).

[include.FILENAME]

подставлет целиком другой файл шаблона. Вместо FILENAME должно быть указано имя файла в каталоге :SYNC/common/autoprovision/templates (/rest/v1/fs/targets/ap_templates).

[random.N]

подставлет случайное целое значение от 0 до N-1. Может быть использовано для round-robin выбора и подстановки вложенного шаблона (например [include.sg[random,5]]).

Пример конфигурации

Управление конфигурацией производится в приложении, доступном для администраторов мастер-домена. Приложение скрывает полное содержание конфигурации, однако тем не менее оно доступно через API.

Конфигурация содержит раздел для описания всех экземпляров всех ролей. Параметры определяются для каждого конкретного экземпляра роли.

Пример узла
{
    "name": "ap1",
    "roletype": "ap",
    "iface": "eth0",

    "group": 11360,
    "order": 1,

    "tftp_port": 69,
    "pnp_url_proto": "tftp"
 }