Блог bitmanager

Asterisk + FreePBX: обновить нельзя сломать

Недавно обновлял клиенту связку Asterisk + FreePBX. У него стоял 1.6, захотелось посвежее. Коллеги сначала скептически отнеслись к этой идее, считая, что я могу все поломать. Ну да, если делать в лоб, конечно, поломаешь. А вот если подобрать правильный напильник…

Начал с обновления пакетов, так как их в системе тоже давненько не обновляли. Никаких граблей не возникло, все прошло, как по нотам.
Следующим на очереди был Asterisk. Обновлялся он с версии 1.6 до 14.5. Нехилый эволюционный скачок, скажу я вам. Но если подготовиться, то сложности не представляет и заводится с пол-пинка. На самом деле, подготовительной работы в разы больше, чем, собственно, установки. Естественно, все было забэкаплено, подсмотрена строка конфигурации, с которой собирался старый Asterisk, обновлены модули DAHDI и LibPRI. После этого из конфигурации старого была вынута настройка menuselect, что позволило сразу выбрать нужные модули. PJSIP ставить не стал, чтобы не отхватить геморроя при переносе SIP настроек. Ну и пару дополнительных пакетов пришлось доставить, и папку модулей старого Asterisk перенести.

Итак, все подготовлено, обновляемся. Сборка проходит без сучка и задоринки, make samples не выполняем, чтобы не затереть конфиги. Запускаемся и… ошибка сегментирования. Оказалось, что модуль stasis при отсутствии конфига роняет все. Перебираем все модули, их стало гораздо больше, отключаем ненужные, добавляем пару конфигов из папки с исходниками и все нормально взлетает. Проверяем командами, что все вроде бы ок и двигаемся дальше.

К FreePBX у меня было больше вопросов. У клиента стоял патченный 2.7.0, а ставить будем нативный 13. И опять подготовка наше все. Бэкапим html, настройки, переименовываем базы. Кстати, чистые базы надо создать сразу, также как и чистые папки для установки веб-интерфейса. Иначе будут ошибки, сам инсталлятор их не создает. На старую версию баз тоже поставиться не удастся. Будет ошибка настроек при инсталляции.
После подготовки установка проходит влет и без ошибок. Интерфейс сразу доступен, Asterisk видится, часть настроек из конфигов смигрировала. Но не все. Дальше начинается самое занятное. Сравниваем таблицы новой и старой базы FreePBX. Для начала доустанавливаем все модули, которые были в старом. Потом начинается самая муторная часть – перенос конфигурации. На удивление оказалось, что конфигурация поменялась не сильно, в части таблиц добавились только новые поля. Сложности были только с таблицами IVR, у которых поменялся весь набор полей, но и их, в итоге, удалось перенести, а также в новом я не смог найти таблицы custom_destinations, и пока не знаю, где ее взять. Х)

В целом, получилось довольно быстро и ненапряжно. Сейчас планирую подключить машину к нашей телефонной станции и посмотреть, как эта связка работает и не вылезут ли дополнительные проблемы.
Записки сисадмина ip-телефония