Дерево страниц

Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Оглавление

Общее описание

Система NAICE поставляется в виде образов для запуска контейнеров в системе контейнеризации и управления приложениями Docker. Для управления всеми компонентами системы используется плагин Docker Compose, предназначенный для решения различных задач для мультиконтейнерных приложений. БД Postgres и сервис FreeRADIUS могут быть при необходимости установлены в виде приложений.

Для автоматизации установки используются плейбуки Ansible.

Установка

Информация

Ниже приведена инструкция по выполнению однохостовой установки.


Примечание

Демонстрационная версия поставляется с ограничением на максимальное количество добавляемых сетевых устройств - 15.

Установка Ansible

Для запуска плейбуков необходимо установить Ansible на хост, с которого есть доступ по SSH до целевого хоста. Запускать плейбук непосредственно на целевом хосте не рекомендуется.

Требуемая ОС хоста для запуска плейбука - Ubuntu 22.04 Jammy.

Официальная документация по установке Ansible.

Помимо способов, описанных в документации, возможна установка ПО на Linux-хост через утилиту apt:

Блок кода
languagebash
sudo apt install ansible

Пакет доступен в базовых репозиториях большинства дистрибутивов Linux.

Получение файлов для работы плейбука

Для разворачивания системы необходимо поместить приложенный архив "ansibleNaice.tar.gz" на хост, с которого будет осуществляться запуск плейбука, в отдельную папку.

View file
nameansibleNaice.tar.gz
height250

Затем необходимо распаковать архив:

Блок кода
languagebash
tar -xzvf ansibleNaice.tar.gz

Предварительная подготовка перед установкой

  1. Установите утилиту sshpass, если она не установлена командой:

    Блок кода
    languagebash
    sudo apt install sshpass


  2. Проверьте и при необходимости дополните строку "127.0.0.1 localhost" в файле /etc/hosts:

    Блок кода
    languagebash
    127.0.0.1 localhost localhost.localdomain


  3. Установите коллекции Ansible, необходимые для работы плейбуков:

    Блок кода
    languagebash
    ansible-galaxy collection install community.postgresql


  4. Для указания адреса хоста, на который необходимо развернуть систему, отредактируйте файл hosts.yml:

    Блок кода
    languageyml
    ---
    common:
      hosts:
        common_host:
          ansible_host: <IP-адрес хоста для NAICE>


  5. Создайте конфигурационный файл ansible.cfg из шаблона:

    Блок кода
    languagebash
    cp ansible.cfg.template ansible.cfg


  6. Настройте режим доступа к хосту по SSH в в файле ansible.cfg зависимости от предпочитаемого варианта:
    1. по логину/паролю:

      Блок кода
      [defaults]
      inventory = hosts.yml
      host_key_checking = False
      deprecation_warnings = False

      и дополните hosts.yml:

      Блок кода
      languageyml
      ---
      common:
        hosts:
          common_host:
            ansible_host: <IP-адрес хоста для NAICE>      
            ansible_user: <логин пользователя>
            ansible_ssh_pass: <пароль пользователя>


    2. по ключу (предварительно необходимо сгенерировать и поместить ключ на удаленный хост):

      Блок кода
      [defaults]
      inventory = hosts.yml
      remote_user = <пользователь на удаленном хосте>
      private_key_file = <путь к файлу ключа>
      host_key_checking = True
      deprecation_warnings = False


  7. (необязательно) При необходимости измените значения переменных окружения в group_vars/all.yml. Например, можно изменить директорию установки сервисов NAICE или таймзону для PostgreSQL.
  8. Проверьте доступ до удаленного хоста с помощью:

    Блок кода
    ansible all --list-hosts  # проверить список хостов
    ansible all -m ping       # проверить доступ до хостов

    Пример вывода, если хост доступен:

    Блок кода
    languagebash
    common_host | SUCCESS => {
        "ansible_facts": {
            "discovered_interpreter_python": "/usr/bin/python3"
        },
        "changed": false,
        "ping": "pong"
    }


  9. (необязательно) При необходимости интеграции с Active Directory в файле переменных плейбука naice-ansible/group_vars/all.yml требуется указать корректные переменные и включить интеграцию(v0.6_3.1 Пример настройки интеграции с Active Directory):

    Блок кода
    use_ms_ad: true
    radius_ms_ad_ip: '172.16.4.115'
    radius_kerberos_ad_user_login: 'fill_login'
    radius_kerberos_ad_user_password: 'fill_password'
    radius_kerberos_workgroup: 'WS'
    radius_kerberos_kdc: 'WS.LOC'
    radius_kerberos_admin_server: 'LABMS.WS.LOC'
    radius_samba_ou_structure: 'Computers'


Установка PostgreSQL

Предусмотрены два варианта дистрибуции СУБД - установка сервиса и разворачивание docker-контейнера. Рекомендуемый вариант - docker-контейнер.

A. Установка PostgreSQL в docker-контейнере

Убедитесь, что переменная deb_postgres в файле group_vars/all.yml имеет значение false. 

PostgreSQL будет установлен далее вместе с остальными сервисами NAICE.

B. Установка PostgreSQL как сервиса

Запустите специальный плейбук, который установит postgresql-15, подготовит конфигурационные файлы, создаст необходимые БД и пользователей:

Блок кода
languagebash
ansible-playbook --ask-become-pass common-naice-databases.yml

Установка сервисов NAICE

Запустите плейбук common-naice-services.yml для установки движка Docker, плагина Docker-compose и запуска через этот плагин сервисов NAICE:

  • если PostgreSQL планируется устанавливать в docker-контейнере (рекомендуется):

    Блок кода
    languagebash
    ansible-playbook --ask-become-pass common-naice-services.yml


  • если PostgreSQL установлен как сервис ранее указанным плейбуком:

    Блок кода
    languagebash
    ansible-playbook --ask-become-pass common-naice-services.yml -e "deb_postgres=true"


Примечание

Время запуска контейнеров в связи с использованием механизма healthcheck для проверки успешности старта сервисов может занять до нескольких минут. Дождитесь полного выполнения плейбука.

Проверить успешность запуска контейнеров можно перейдя в директорию для установки NAICE (по умолчанию - /etc/docker-naice/ ) и выполнив команду для просмотра списка и статуса контейнеров docker compose ps -a. Вывод команды должен быть примерно следующим:

Блок кода
languagebash
$sudo docker compose ps -a
NAME             IMAGE                                    COMMAND                  SERVICE        CREATED             STATUS                       PORTS
naice-gavia      hub.eltex-co.ru/naice/naice-gavia:0.6    "java -cp @/app/jib-…"   naice-gavia    About an hour ago   Up About an hour (healthy)   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp
naice-lemmus     hub.eltex-co.ru/naice/naice-lemmus:0.6   "java -cp @/app/jib-…"   naice-lemmus   About an hour ago   Up About an hour (healthy)   0.0.0.0:8083->8083/tcp, :::8083->8083/tcp
naice-lepus      hub.eltex-co.ru/naice/naice-lepus:0.6    "java -cp @/app/jib-…"   naice-lepus    About an hour ago   Up About an hour (healthy)   0.0.0.0:8087->8087/tcp, :::8087->8087/tcp, 0.0.0.0:67->1024/udp, :::67->1024/udp
naice-nats       hub.eltex-co.ru/naice/nats:0.6.1         "docker-entrypoint.s…"   nats           About an hour ago   Up About an hour (healthy)   0.0.0.0:4222->4222/tcp, :::4222->4222/tcp, 0.0.0.0:7777->7777/tcp, :::7777->7777/tcp, 0.0.0.0:8222->8222/tcp, :::8222->8222/tcp, 6222/tcp
naice-ovis       hub.eltex-co.ru/naice/naice-ovis:0.6     "java -cp @/app/jib-…"   naice-ovis     About an hour ago   Up About an hour (healthy)   0.0.0.0:8084-8085->8084-8085/tcp, :::8084-8085->8084-8085/tcp
naice-postgres   hub.eltex-co.ru/naice/postgres:0.6.1     "docker-entrypoint.s…"   postgres       About an hour ago   Up About an hour (healthy)   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp
naice-radius     hub.eltex-co.ru/naice/naice-radius:0.6   "/docker-entrypoint.…"   naice-radius   About an hour ago   Up About an hour (healthy)   0.0.0.0:1812-1813->1812-1813/udp, :::1812-1813->1812-1813/udp, 0.0.0.0:9812->9812/tcp, :::9812->9812/tcp
naice-ursus      hub.eltex-co.ru/naice/naice-ursus:0.6    "java -cp @/app/jib-…"   naice-ursus    About an hour ago   Up About an hour (healthy)   0.0.0.0:8081-8082->8081-8082/tcp, :::8081-8082->8081-8082/tcp
naice-vulpus     hub.eltex-co.ru/naice/naice-vulpus:0.6   "java -cp @/app/jib-…"   naice-vulpus   About an hour ago   Up About an hour (healthy)   0.0.0.0:8086->8086/tcp, :::8086->8086/tcp
naice-web        hub.eltex-co.ru/naice/naice-web:0.6      "/docker-entrypoint.…"   naice-web      About an hour ago   Up About an hour (healthy)   80/tcp, 0.0.0.0:80->4200/tcp, :::80->4200/tcp

Установка FreeRADIUS (опционально)

Примечание

Начиная с версии 0.6 FreeRADIUS контейнеризирован и по умолчанию устанавливается вместе с другими сервисами Elex-NAICE - его отдельная установка не требуется. 

Что бы иметь возможность установить FreeRADIUS отдельно в виде пакета требуется предварительно установить сервисы NAICE командой:

Блок кода
languagebash
ansible-playbook --ask-become-pass common-naice-services.yml -e "deb_radius=true"


Для установки FreeRADIUS в deb теребуется в файле all.yml исправить значение переменной "deb_radius" на "true":

Блок кода
languagebash
deb_radius: true

Запустить плейбук common-freeradius.yml для установки сервиса FreeRADIUS и его конфигурирования:

Блок кода
languagebash
ansible-playbook --ask-become-pass common-freeradius.yml

При необходимости интеграции с MS AD (v0.6_3.1 Пример настройки интеграции с Active Directory) плейбук необходимо в файле all.yml исправить переменную "use_ms_ad" на "true" и запустить плейбук:

Блок кода
use_ms_ad: true


Примечание

Установку FreeRADIUS всегда необходимо выполнять после установки сервисов NAICE.


Примечание

При интеграции с MS AD если настройка DNS на сервере с NAICE выполнялась после его установки, то необходим дополнительный рестарт контейнеров для применения настройки:

Блок кода
docker compose stop && docker compose up -d


Приложения

Приложение A. Значение переменных окружения из .env

ПеременнаяЗначение по умолчаниюОписание

Переменные для дистрибуции

BACKEND_VERSION_TAG

0.6Версия сервисов бэкенда (naice-gavia, naice-lemmus, naice-ovis, naice-ursus)

FRONTEND_VERSION_TAG

0.6Версия сервиса фронтенда (naice-web, известный как larus)
POSTGRES_VERSION_TAG0.6.1Версия контейнерезированного образа БД postgres
RADIUS_VERSION_TAG0.6Версия контейнерезированного образа FreeRadius
NATS_VERSION_TAG0.6.1Версия контейнерезированного образа NATS
ELTEX_HUBhub.eltex-co.ru/naiceВнешний репозиторий со стабильными версиями сборок ПО

BACKEND_HUB

ELTEX_HUBПеременная, хранящая текущий выбранный репозиторий для загрузки сервисов бэкенда

FRONTEND_HUB

ELTEX_HUBПеременная, хранящая текущий выбранный репозиторий для загрузки сервиса фронтенда
RADIUS_HUBELTEX_HUBПеременная, хранящая текущий выбранный репозиторий для загрузки контейнера с FreeRADIUS
CI_HUBhub.eltex-co.ruВнешний репозиторий для сборок сопутствующих продуктов (PostgreSQL)

Переменные Gavia

GAVIA_PORT8080Порт, на котором работает сервис внутри контейнера. (warning) Не рекомендуется к редактированию!
GAVIA_HOST_PORT8080Порт, в который пробрасывается порт сервиса из контейнера на хостовую машину. Используется для взаимодействия с сервисом.

Переменные Ursus

URSUS_PORT

8081Порт, на котором работает сервис внутри контейнера. (warning)

URSUS_HOST_PORT

8081Порт, в который пробрасывается порт сервиса из контейнера на хостовую машину. Используется для взаимодействия с сервисом.

URSUS_GRPC_PORT

8082Порт, на котором работает GRPC для сервиса внутри контейнера. (warning)

URSUS_GRPC_HOST_PORT

8082Порт, в который пробрасывается порт GRPC для сервиса из контейнера на хостовую машину. Используется для взаимодействия с сервисом.

URSUS_POSTGRES_USERNAME

ursusПользователь для доступа сервиса в СУБД PostgreSQL.

URSUS_POSTGRES_PASSWORD

ursusПароль пользователя для доступа сервиса в СУБД PostgreSQL.
URSUS_POSTGRES_DBursusНаименование БД, используемой сервисом

URSUS_POSTGRES_JDBC_URL

jdbc:postgresql://{{ ansible_host }}:5432/ursusURL для взаимодействия с БД с помощью JDBC.
URSUS_GRPC_ADMIN_SERVICE_ADDRESSdns:/naice-ursus:8082Адрес GRPC сервера сервиса naice-ursus. По этому адресу происходит взаимодействие naice-gavia и naice-ursus.
URSUS_OUI_UPDATE_TIME_S86400Периодичность обновления списка MAC OUI, с
URSUS_OUI_UPDATETrueВключить/выключить обновление списка MAC OUI
URSUS_OUI_UPLOAD_FILE_URLhttps://standards-oui.ieee.org/oui/oui.csvАдрес списка MAC OUI, который используется для обновления

Переменные Lemmus

LEMMUS_PORT8083Порт, на котором работает сервис внутри контейнера. (warning)
LEMMUS_HOST_PORT8083Порт, в который пробрасывается порт сервиса из контейнера на хостовую машину. Используется для взаимодействия с сервисом.
LEMMUS_POSTGRES_USERNAMEursusПользователь для доступа сервиса в СУБД PostgreSQL.
LEMMUS_POSTGRES_PASSWORDursusПароль пользователя для доступа сервиса в СУБД PostgreSQL.
LEMMUS_ISSUER_URLhttp://{{ ansible_host }}:8083URL для запроса токена другими сервисами.
LEMMUS_REDIRECTShttp://{{ ansible_host }}:8080/actuator/health, http://{{ ansible_host }}:4200/loginURL для перенаправления клиента после получения токена.
LEMMUS_ACCESS_TTL_S3600Время жизни токена в секундах.
LEMMUS_REFRESH_TTL_S7200Время в секундах, в течении которого токен можно продлить.

Переменные PostgreSQL

POSTGRES_USERpostgresПользователь, создаваемый при установке и настройке СУБД.
POSTGRES_PASSWORDpostgresПароль пользователя, создаваемый при установке и настройке СУБД.

Переменные Ovis

OVIS_PORT8084Порт, на котором работает сервис внутри контейнера. (warning)
OVIS_HOST_PORT8084Порт, в который пробрасывается порт сервиса из контейнера на хостовую машину. Используется для взаимодействия с сервисом.
OVIS_GRPC_PORT8085Порт, на котором работает GRPC для сервиса внутри контейнера. tinymce.emotions_dlg.warning
OVIS_GRPC_HOST_PORT8085Порт, в который пробрасывается порт GRPC для сервиса из контейнера на хостовую машину. Используется для взаимодействия с сервисом.
OVIS_GRPC_SERVICE_ADDRESSdns:/naice-ovis:${OVIS_GRPC_PORT}Адрес, на который выполняется запрос о состоянии сервиса.
OVIS_CACHE_TTL_S86400

Время жизни кэша naice-ovis в секундах, в течении которого он хранит настройки аутентификации и авторизации. По истечении этого времени настройки перечитываются.

OVIS_SESSION_IDLE_S86400Время жизни неактивных сессии пользователей, с.
OVIS_POSTGRES_JDBC_URLjdbc:postgresql://{{ ansible_host }}:5432/ursusАдрес подключения к БД
OVIS_POSTGRES_USERNAMEovisЛогин подключения к БД
OVIS_POSTGRES_PASSWORDovisПароль подключения к БД

Переменные Larus (WEB)

LARUS_PORT4200Порт, на котором работает сервис внутри контейнера. (warning)
LARUS_HOST_PORT80Порт, в который пробрасывается порт сервиса из контейнера на хостовую машину. Используется для взаимодействия с сервисом.
FRONTEND_API_URLhttp://{{ ansible_host }}:8080/api/v1URL для взаимодействия с сервисом naice-gavia.
FRONTEND_AUTHORIZATION_URLhttp://{{ ansible_host }}:8083URL для редиректа на страницу авторизации.
FRONTEND_WEB_URLhttp://{{ ansible_host }}:80URL на котором работает WEB-интерфейс.
Переменные NATS
NATS_PORT4222Порт, на котором работает сервис
NATS_MONITORING_PORT8222Порт, через который выполняется мониторинг сервиса
NATS_EXPORTER_PORT7777Порт, через который сервис отдает метрики в формате prometheus
NATS_ADDRESSnats://naice-nats:${NATS_PORT}Адрес, на котором работает сервис
NATS_PROMETHEUS_EXPORTER_ARGS"-connz -varz -channelz -serverz -subz"Аргументы командной строки, которые используется при формировании метрик prometheus
Переменные Vulpus
VULPUS_PORT8086Порт, на котором работает сервис внутри контейнера.
VULPUS_HOST_PORT8086Порт, в который пробрасывается порт сервиса из контейнера на хостовую машину. Используется для взаимодействия с сервисом.
VULPUS_GRPC_PORT8088Порт,  в который пробрасывается порт сервиса из контейнера на хостовую машину. Используется для взаимодействия по gRpc.
VULPUS_POSTGRES_USERNAMEvulpusЛогин для подключения к БД.
VULPUS_POSTGRES_PASSWORDvulpusПароль для подключения к БД.
VULPUS_POSTGRES_JDBC_URLjdbc:postgresql://{{ ansible_host }}:5432/lepusАдрес БД для подключения.
VULPUS_GRPC_SERVICE_ADDRESSdns:/naice-vulpus:${VULPUS_GRPC_PORT}Порт, на котором внутри контейнера работает gRpc сервер.
Переменные Lepus
LEPUS_PORT8087Порт, на котором работает сервис внутри контейнера.
LEPUS_HOST_PORT8087Порт, в который пробрасывается порт сервиса из контейнера на хостовую машину. Используется для взаимодействия с сервисом.
LEPUS_REPOSITORY_BATCH_SIZE500Размер пакета сохранения проб в БД (количество)
LEPUS_POSTGRES_USERNAMElepusЛогин для подключения к БД.
LEPUS_POSTGRES_PASSWORDlepusПароль для подключения к БД.
LEPUS_POSTGRES_JDBC_URLjdbc:postgresql://{{ ansible_host }}:5432/lepusАдрес БД для подключения.
LEPUS_DHCP_PROBE_ENABLEDtrueВключение/отключение сбора DHCP проб.
LEPUS_DHCP_PROBE_PORT1024Внутренний порт в контейнере для сбора DHCP проб. В него пробрасывается порт сервиса из контейнера на хостовую машину.
LEPUS_DHCP_PROBE_HOST_PORT67Внешний порт сервиса для сбора DHCP проб.
LEPUS_DHCP_PROBE_SCHEDULE_CLEAR_PROBES_AFTER_DAYS30Время хранения DHCP проб в БД.
LEPUS_DHCP_PROBE_SCHEDULE_CLEAN_EXPIRED_CRON0 0 * * * *Расписание для запуска задачи по очистке устаревших DHCP проб в БД.
Переменные RADIUS
RADIUS_AUTH_PORT1812Порт аутентификации для обработки RADIUS-запросов аутентификации.
RADIUS_ACCT_PORT1813Порт для обработки RADIUS-аккаунтинга.
RADIUS_EXPORTER_PORT9812Порт, через который сервис отдает метрики в формате prometheus.
RADIUS_LOG_PATH/var/log/radiusФайл на хостовой машине для хранения логов работы сервиса.
RADIUS_REST_OVIS_IP{{ ansible_host }}IP-адрес для подключения к сервису NAICE-Ovis.
RADIUS_REST_OVIS_PORT8084Порт для подключения к сервису NAICE-Ovis.
RADIUS_POSTGRES_DB_HOST{{ ansible_host }}IP-адрес подключения к БД.
RADIUS_POSTGRES_DB_PORT5432Порт подключения к БД.
RADIUS_POSTGRES_DB_LOGINradiusЛогин для подключения к БД.
RADIUS_POSTGRES_DB_PASSWORDradiusПароль для подключения к БД.
RADIUS_POSTGRES_DB_NAMEursusНаименование БД для подключения.
RADIUS_CERTS_DIR_PATHне заданоДиректория, где располагается внешний (пользовательский) сертификат, который необходимо использовать при работе FreeRADIUS. По умолчанию не указывается, т.к. имеется встроенный валидный сертификат.
RADIUS_CERTS_CA_CERT_FILEtrusted_server.crtНаименование файла внешнего сертификата CA.
RADIUS_CERTS_DH_FILEdhНаименование внешнего файла dh
RADIUS_CERTS_PRIVATE_KEY_FILEtrusted_server.kНаименование внешнего приватного ключа сертификата.
RADIUS_CERTS_PRIVATE_KEY_PASSWORDне заданоПароль к внешнему приватному ключу сертифката.
RADIUS_CERTS_CERTIFICATE_FILEtrusted_server_chain.crtНаименование файла внешнего сертификата, который будет использовать FreeRADIUS.
RADIUS_MS_ADFalseВключение/отлючение интеграции с MS AD. По умолчанию отлючено.
RADIUS_MS_AD_IP192.168.1.1IP-адрес сервера MS AD.
RADIUS_KERBEROS_AD_USERfill_loginЛогин для подключения к серверу MS AD.
RADIUS_KERBEROS_AD_USER_PASSWORDfill_passwordПароль для подключения к серверу MS AD.
RADIUS_KERBEROS_ADMIN_SERVERLABMS.WS.LOCПолный адрес сервера MS AD.
RADIUS_KERBEROS_KDCWS.LOCПолный адрес домена MS AD, в котором будет работать Eltex-NAICE.
RADIUS_KERBEROS_WORKGROUPWSДомен MS AD, в котором будет работать Eltex-NAICE.
RADIUS_KERBEROS_LOGS_PATH/var/log/kerberosФайл на хостовой машине для хранения логов работы kerberos.
Переменные уровня логирования сервисов
ROOT_LOGGING_LEVELDEBUGКорневой уровень логирования. Логи сервисов выше данного уровня не отображаются.
URSUS_LOGGING_LEVELDEBUGУровень логирования сервиса NAICE-Ursus
GAVIA_LOGGING_LEVELDEBUGУровень логирования сервиса NAICE-Gavia
LEMMUS_LOGGING_LEVELDEBUGУровень логирования сервиса NAICE-Lemmus
OVIS_LOGGING_LEVELDEBUGУровень логирования сервиса NAICE-Ovis
LEPUS_LOGGING_LEVELDEBUGУровень логирования сервиса NAICE-Lepus
VULPUS_LOGGING_LEVELDEBUGУровень логирования сервиса NAICE-Vulpus