Интерсвязь | Бизнес
Руководство по развертыванию программно-аппаратного комплекса
«Интерсвязь.Платформа IP-домофонии»
Экземпляр ПО доступен по ссылке
Состав комплекса:

  • Кластер из двух серверов (система для управления домофонами + back-end IP-домофонии)
  • Клиентская часть в виде мобильного приложения
Список используемых терминов и сокращений:

  • CRM - первый сервер в кластере, где размещен веб-интерфейс, база, прочие утилиты
  • SIP - второй сервер в кластере, где размещен back-end, связанный с звонковой частью функционала.
Инструкция по настройке первого сервера (далее crm).

На сервере должна быть установлена OS Debian 10 (GNU General Public License), https://www.debian.org/

Должны быть установлены следующие пакеты:

  • Git (GPLv2), git-scm.com
  • Docker (GPL), docker.com
  • docker-compose (GPL), docker.com
  • python3 (PSFL), python.org
  • gnupg2 (GPL), gnupg2 2.2.20-1ubuntu3 source package
  • pass (GPL), gnupg2 2.2.20-1ubuntu3 source package
  • curl (GPL), gnupg2 2.2.20-1ubuntu3 source package
  • sed (GPL), gnupg2 2.2.20-1ubuntu3 source package
  • ansible (версия > 2.9.19 (GPLv3), репозиторий: http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main)
  • tar (GPL), gnupg2 2.2.20-1ubuntu3 source package

Должны быть выполнены обновления apt update и apt upgrade

На время установки должна быть установлена переменная, которая отключает требование на проверку отпечатка:
echo "ANSIBLE_HOST_KEY_CHECKING=False" >> /etc/environment


Приступаем к установке:

  1. Скачиваем архивы

  2. Нам нужна папка crm. В ней папки (ansible_crm, docker_images, td) перемещаем в папку /opt на сервере

    1. mv ansible_crm /opt/
    2. mv docker_images.tar /opt/
    3. mv td /opt/

  3. Переходим в эту папкуcd /opt
  4. Продукт уже скачан и находится у нас. Теперь приступим к его настройке.

    1. Начнем с переменных, перейдем в папку, которая содержит переменные нашего будущего проекта. (В дальнейшем будут появляться новые переменные)cd ansible_crm/environments/

    2. Начнем с самых простых переменных, переменных ansible, которые требуются для работы playbook. Опишем те переменные, которые потребуют изменений:nano env_ansible.yml

  • USER - имя пользователе на сервере, который будет использоваться нашим сценарием playbook.
    (В нашем случае это ansible)

  • type_connect - команда с помощью которой мы будем менять подключение от обычного пользователя ansible к пользователю root. (Обычно используется sudo или su)
3. Перейдем к глобальным переменным, доступным из всего проекта и опишем их.nano env_global.yml
  • TZ - часовой пояс, который актуален для сервера.
    В нашем случае "Europe/Moscow"
  • ADRESS_CRM - доменное имя, которое будет вести на нашу CRM. (На том же сервере что и TD)
    ADRESS_TD - доменное имя, которое будет вести на нашу TD.
  • IP_LOCAL - локальный (серый) адрес нашего сервера.
  • IP_GLOBAL - глобальный (белый) адрес нашего сервера.
  • TOK - уникальное значение, нужное для формирование уникальный токенов.
    TOK должен быть в скобках " ' ' ", их удалять не нужно.
  • SIP_SERVER_DOMAIN - доменное имя, которое будет вести на наш SIP сервер. (отделен от CRM и TD)
  • SIP_SERVER_PORT - порт SIP сервера, на неизменяемое значение.
  • SIP_SERVER_USER_PORT - также порт SIP сервера, неизменяемое значение.
  • SIP_SERVER_PROTO - тип соединения с SIP серверов, неизменяемое значение.

4. Перейдем к переменным, которые требуются для баз данных mysql:nano env_mysql.yml

    1. PASS - пароль администратора для входа на сайт по логину admin
    2. PASS_HASH - захешированный выше пароль, можно сделать с помощью https://bcrypt-generator.com/HASH должен быть в скобках " ' ' ", их удалять не нужно.
    3. BUYER_ID - id номер покупателя, его стоит уточнить у сотрудников техподдержки Интерсвязь
    4. NAME_COMPANY - имя компании.

    5. Переходим вновь в папку ansible_crm
    cd /opt/ansible_crm

    6. Запускаем сценарий.

    1. Загрузка crm:
      ansible-playbook install.yml -i hosts.yml -kK --tags "install"

    2. Через 5 минут после окончания последнего этапа запускаем новый. Загрузка данных в базу данных: ansible-playbook install.yml -i hosts.yml -kK --tags "dbload"


    Инструкция по настройке второго сервера.

    На сервере должна быть установлена OS Debian 10 (GNU General Public License), https://www.debian.org/

    Будут установлены следующие пакеты в ходе настройки ПО:

    1. Извлекаем из архива, скачанного в п.1 инструкции по настройке первого сервера, папку SIP
    2. В файле hosts в раздел televoip необходимо добавить ip адрес сервера.
    3. Для разворачивания сервера необходимо добавить файл в playbook\roles\televoip\vars\Host, имя файла в vars/Host/ должно совпадать с hostname на сервере - Особенность работы Ansible (например DOMOFON-SRV2.yml). Содержание файла:

    CLIENT_SITE: yes
    SITE_NAME: 'televoip-core' # сокращённое доменное имя

    # Как называется файл с переменными.
    NODE_NAME: televoip1-core # имя сервера

    REDIS_CACHE: '127.0.0.1' # localhost
    ASTERISK:
    USER_AGENT: td_televoip_core
    DOMAIN: televoip-core.ru # доменное имя сервера
    UPLINK:
    NAME: td_televoip_core
    HOST: televoip-core.is74.ru # доменное имя сервера
    IP: '10.100.11.118' # "Серый" ip адрес, на котором работает asterisk

    KAMAILIO:
    LISTEN:
    - { ip: '**.**.**.**', port: '7777', adv_ip: 'televoip-core.ru', kamctlrc: True } # ip: "белый" ip адрес на котором работает kamailio

    DBS:
    - { type: mysql, name: MDB_LOCATION, kamctlrc: True, server: 'localhost', db_name: kamailio, rw_user: kamailiorw, rw_password: kamailiorw }
    - { type: mysql, name: TD_MDB_CRM, server: 'localhost', db_name: kamailio, ro_user: kamailioro, ro_password: kamailioro }

    # RTPENGINE
    RTPENGINE:
    INSTALL: true
    PORT_MIN: 20000 # min port rtpengine
    PORT_MAX: 60000 # max port rtpengine
    INTERFACE: '*.*.*.*' # "белый" ip адрес на котором работает kamailio
    TIMEOUT: 10
    WORKERS: 4 # Задается равным количеству ядер в /proc/cpuinfo
    SYSTEMD_RESTART: always

    RTPENGINE_APT_VERSION: '9.2.1'

    GLOBALS:
    WITH_LOOPPROTECT_PATCH: False
    WITH_ASYNC_FRAMEWORK: False
    DEFINE_RTPENGINE_IP: "'*.*.*.*'" # "белый" ip адрес на котором работает kamailio
    MEDIASERVER: "'sip:10.100.11.118:5060'" # "Серый" ip адрес и порт, на котором работает asterisk
    WHITELIST_ID: 1

    # Авторизация в API
    CLIENT_API:
    SERVER: 'https://crm.testing-pl.is74.ru/api' # url для авторизации в api
    AUTH_DATA:
    BUYER_ID: # id (например 56)
    LOGIN: # логин для авторизации (например: 'user')
    PASS: # пароль для авторизации (например: 'userpass')
    SERVER_CRM: 'https://crm.testing-pl.is74.ru/' # url сервера crm

    # Авторизация в ARI
    CLIENT_ARI:
    PASSWORD: '{OLgkjegAEg[kaeg'
    CRYPTED: '$6$vS3aldKc3mtpZaue$KjRWAq78PnBjkOrtIlCPsRMgfs6FI8gbHu9bDFSacJS/f6xK5j1P4ZxPVRJ9gY741bLAD6UH0EjwNvUqUz5KH.'

    4. Для установки необходимого ПО нужно проиграть плейбук с playbook_action=install:

    ansible-playbook -u spazm82 --limit=televoip1-core-chel1 -bkK playbooks/televoip.yml -vv -e "playbook_action=install SERVER_ROLE=ASTERISK"

    ansible-playbook -u spazm82 --limit=televoip1-core-chel1 -bkK playbooks/televoip.yml -vv -e "playbook_action=install SERVER_ROLE=KAMAILIO"

    5. Для конфигурирования сервера (kamailio, asterisk) нужно проиграть плейбук с playbook_action=configure, в результате проигрывания на сервер устанавливаются необходимые конфигурационные файлы, устанавливаются необходимые скрипты:

    ansible-playbook -u spazm82 --limit=televoip1-core-chel1 -bkK playbooks/televoip.yml -vv -e "playbook_action=configure SERVER_ROLE=ASTERISK"

    ansible-playbook -u spazm82 --limit=televoip1-core-chel1 -bkK playbooks/televoip.yml -vv -e "playbook_action=configure SERVER_ROLE=KAMAILIO"


    Клиентская часть в виде Android-приложения.

    Для проверĸи работоспособности паĸета требуется мобильный телефон с ОС Android версии не ниже 5.0

    Установка пакета.

    1. Подĸлючите телефон ĸ ĸомпьютеру.
    2. Сĸопируйте файл app-release.apk (извлеченный из архива, скачанного в п.1 инструкции по настройке первого сервера) в ĸаĸую-нибудь папĸу на телефоне, например, Downloads
    3. Используя любой диспетчер файлов на телефоне, найти и запустить данный APK. Ввести учётные данные. Логин demotest1, Пароль nh2m66, ид 1

    4. Распределение зон ответственности при эксплуатации системы
    1. При предоставлении услуг поддержки Исполнитель придерживается следующего распределения зон ответственности:
    Пусть сложные решения даются легко!
    Документы «Интерсвязь. Платформа IP-домофонии»:
    Руководство по развертыванию платформы
    Жизненный цикл
    Экземпляр ПО
    Регламент оказания услуг технической поддержки Платформы для IP-домофонии
    Руководство пользователя

    Документы «Интерсвязь. Цифровая мультисервисная платформа - суперприложение для жителей»:
    Жизненный цикл
    Руководство по эксплуатации
    Экземпляр ПО

    ООО Фирма «Интерсвязь»,
    г. Челябинск, пр. Победы, 288, офис 605
    Звонок бесплатный