Общее описание
Система NAICE поставляется в виде образов для запуска контейнеров в системе контейнеризации и управления приложениями Docker. Для управления всеми компонентами системы используется плагин Docker Compose, предназначенный для решения различных задач для мультиконтейнерных приложений.
Для автоматизации установки используются плейбуки Ansible.
Установка
Ниже приведена инструкция по выполнению однохостовой установки.
Инструкция по установке с резервированием системы приведена в статье v0.9_3.6 Резервирование.
Возможна онлайн и оффлайн установка.
Установка онлайн возможна на все поддерживаемые типы ОС и описана далее.
Оффлайн установка (закрытый контур) описана в разделах:
v0.9_ru_3.2.1 Установка в закрытом контуре на ОС Ubuntu 22/24
v0.9_ru_3.2.2 Установка в закрытом контуре на ОС Astra Linux 1.7.5 / 1.7.6
v0.9_ru_3.2.3 Установка в закрытом контуре на ОС Astra Linux 1.8.1
v0.9_3.2.4 Установка в закрытом контуре на ОС RedOS 7.3.4/7.3.5/8.0
Установка Ansible
Для запуска плейбуков необходимо установить Ansible на хост, с которого есть доступ по SSH до целевого хоста.
Рекомендуемая ОС хоста для запуска плейбука - Ubuntu 24.04.
Минимальная версия Ansible для корректной работы плейбуков установки 2.16.3.
Для корректной установки на ОС Astra Linux 1.7.5 / 1.7.6 требуется версия Ansible не выше 2.17.12.
Официальная документация по установке Ansible.
Помимо способов, описанных в документации, возможна установка ПО на Linux-хост через утилиту apt:
sudo apt install ansible
Пакет доступен в базовых репозиториях большинства дистрибутивов Linux.
Для корректной установки на ОС RedOS 7/8 потребуется вручную обновить ansible community docker!
Получение файлов для работы плейбука
NAICE является лицензируемым продуктом, для активации функционала необходима лицензия. См. v0.9_2. Лицензирование.
На момент установки наличие лицензии необязательно, активировать продукт можно.
До активации лицензии используется демо режим, в котором ограничено максимально количество сетевых устройств, активных эндпоинтов, активных гостевых эндпоинтов количеством 15 шт.
Для разворачивания системы в онлайн режиме необходимо скачать и поместить на хост, с которого будет выполняться запуск плейбука архив: ansibleNaice-v09-06-07-2025.tar.gz
wget https://cloud.eltex-co.ru/index.php/s/TaIo9H7xwcgwhoF/download -O ansibleNaice-v09-06-07-2025.tar.gz
Затем необходимо распаковать архив:
tar xzvf ansibleNaice-v09-06-07-2025.tar.gz
Зайти в папку с плейбуками:
cd ansibleNaice-v09-06-07-2025
Предварительная подготовка перед установкой
Подготовка хоста, с которого будет выполняться запуск плейбуков Ansible
Установите утилиту
sshpass, если она не установлена, командой:sudo apt install sshpass
Настройка доступа к хостам для установки
Для настройки хоста, на который будет выполняться развертывание системы, требуется отредактировать файл
inventory/hosts.yml. В переменнойansible_hostнеобходимо указать IP-адрес или доменное имя целевого хоста:--- common: hosts: # Хост для выполнения stand-alone установки NAICE common_host: ansible_host: <IP-адрес или доменное имя хоста для NAICE>Указанный IP-адрес или доменное имя хоста будет добавлен в параметр в Subject Alternative Name при генерации самоподписанного сертификата во время установки сервисов NAICE.
- Настроить режим доступа к хосту по SSH в файле
ansible.cfgв зависимости от предпочитаемого варианта:по логину/паролю:
[defaults] inventory = hosts.yml host_key_checking = False deprecation_warnings = False
и дополнить
hosts.yml:--- common: hosts: common_host: ansible_host: <IP-адрес или доменное имя хоста для NAICE> ansible_user: <логин пользователя> ansible_ssh_pass: <пароль пользователя> ansible_become_pass: <пароль для повышения привилегий (sudo)>по ключу (предварительно необходимо сгенерировать и поместить ключ на целевой хост):
[defaults] inventory = hosts.yml host_key_checking = True private_key_file = <путь к файлу ключа> deprecation_warnings = False
Проверить корректность указанных настроек и наличие доступа до удаленного хоста с помощью команд:
ansible all --list-hosts # проверить список хостов ansible all -m ping # проверить доступ до хостов
Пример вывода, если хост доступен:
common_host | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python3" }, "changed": false, "ping": "pong" }
Настройка часового пояса (TZ)
Для корректного отображения времени в системе NAICE необходимо задать следующий параметр в файле конфигурации group_vars/all.yml.
Формат переменной:
time_zone: "Регион/Город"
Проверка доступности центрального сервера лицензирования компании "Элтекс" (Online ELM):
Между NAICE и ELM должна быть обеспечена сетевая связность. Для проверки доступности можно выполнить на хосте с NAICE команду:
curl -k https://elm.eltex-co.ru:8099/elm/Hello
Если сервер ELM доступен, то вывод команды будет иметь вид:
{"status":2,"result":"OK","server-info":{"version":"1.5","build":"10","root":true,"serverType":"elm","daemonMode":"server","serverMode":"root","protocolSupported":2,"protocolActual":4,"server-type":"elm","protocol-supported":2,"protocol-actual":4}}
Настройка подключения к серверу лицензирования Online ELM через HTTP-proxy
Система NAICE поддерживает подключение к серверу лицензирования Online ELM через HTTP-proxy сервер.
Поддерживаемые режимы работы:
Подключение через HTTP-proxy: поддержана возможность аутентификации на прокси-сервере по логину/паролю или без аутентификации.
- Подключение через HTTPS-proxy не поддерживается
Для настройки подключения через HTTP-proxy сервер необходимо задать следующие параметры в файле конфигурации group_vars/all.yml:
gulo_proxy_host: "<IP-адрес HTTP-proxy сервера>" gulo_proxy_port: "<порт HTTP-proxy сервера>" gulo_proxy_login: "<логин для аутентификации на HTTP-proxy сервере>" gulo_proxy_password: "<пароль для аутентификации на HTTP-proxy сервере>"
По умолчанию все параметры имеют пустые значения, что означает прямое подключение к серверу Online ELM.
Если аутентификация на HTTP-proxy сервере не используется - переменные gulo_proxy_login и gulo_proxy_password необходимо оставить пустыми.
Между NAICE и HTTP-proxy сервером, через который будет проходить трафик до сервера Online ELM, должна быть обеспечена стабильная сетевая связность. Для проверки доступности сервера лицензирования через HTTP-proxy сервер можно выполнить на хосте с NAICE следующие команды:
- Для прокси без аутентификации:
curl -k -x http://<IP адрес HTTP-proxy>:<порт HTTP-proxy> https://elm.eltex-co.ru:8099/elm/Hello
- Для прокси с аутентификацией:
curl -k -x http://user:password@<IP адрес HTTP-proxy>:<порт HTTP-proxy> https://elm.eltex-co.ru:8099/elm/Hello
Если сервер Online ELM доступен, то вывод команды будет иметь вид:
{"status":2,"result":"OK","server-info":{"version":"1.5","build":"10","root":true,"serverType":"elm","daemonMode":"server","serverMode":"root","protocolSupported":2,"protocolActual":4,"server-type":"elm","protocol-supported":2,"protocol-actual":4}}
Указание адреса сервера лицензий (при лицензировании с Offline ELM)
В случае, если выбрана схема лицензирования с Offline ELM, необходимо указать адрес сервера в файле переменных плейбука group_vars/all.yml:
gulo_elm_server_url: https://<IP адрес Offline ELM>:<порт Offline ELM>
По умолчанию Offline ELM запущен на порту 8099.
Если лицензирование выполняется на центральном сервере компании "Элтекс" (Online ELM), то изменять значение переменной не нужно.
Между NAICE и ELM должна быть обеспечена сетевая связность. Для проверки доступности можно выполнить на хосте с NAICE команду:
curl -k https://<IP адрес ELM>:<порт ELM>/elm/Hello
Если сервер ELM доступен, то вывод команды будет иметь вид:
{"server-info":{"version":"1.4","build":"14","root":false,"serverType":"elm","daemonMode":"server","serverMode":"offline","protocolSupported":3,"protocolActual":3,"server-type":"elm","protocol-supported":3,"protocol-actual":3},"status":2,"result":"OK"}
Замена сертификатов по умолчанию для работы протокола EAP-PEAP (опционально)
- Для работы метода аутентифкации EAP-PEAP (по логину/паролю пользователя) требуется наличие валидного сертиката на стороне RADIUS-сервера NAICE. По умолчанию публичный сертифкат встроен в контейнер naice-radius и готов к работе. При необходимости замены данный сертифкат может быть заменен на другой. Для корректной установки потребуется:
Сертификат корневого сервера ЦС;
Сертификат для сервера NAICE;
Приватный ключ сертификата сервера NAICE.
Сертификаты требуется расположить в папке плейбуков Ansible roles/docker/files/tls.
В секции переменных плейбука
group_vars/all.yml, отвечающих за установку сертификатов для работы EAP-PEAP требуется указать переменные, чтобы включить интеграцию:# параметры сертификатов # требует настройки ТОЛЬКО ЕСЛИ планируется использовать сторонний сертификат сервера в radius # перед запуском плейбука требуется создать папку сертификатов на целевой машине и положить в неё все требуемые сертификаты # для включения установки сертификатов протокола EAP необходимо расположить файлы сертификатов сервера в папке ansible/roles/docker/files/tls radius_cert_dir_copy: false # включить копирование сертификатов из директории ansible/roles/docker/files/tls radius_certs_ca_cert_file: trusted_server.crt # имя файла корневого (CA) сертификата radius_certs_private_key_file: trusted_server.k # имя файла приватного ключа сертификата сервера radius_certs_private_key_password: # пароль к файлу приватного ключа сертификата сервера, оставьте пустым, если файл приватного ключа не запаролен radius_certs_certificate_file: trusted_server_chain.crt # имя файла сертификата сервера
Описание параметров, которые необходимо настроить для работы протокола EAP-TLS:
Параметр Назначение radius_cert_dir_copy Переменная, отвечающая за копирование сертификатов из папки на целевой хост и использование их в сервисе nacie-radius. radius_certs_ca_cert_file Имя файла корневого сертификата ЦС. radius_certs_private_key_file Имя файла приватного ключа сервера. radius_certs_private_key_password Пароль к файлу приватного ключа сервера. Если значение не указано, считается что пароль не используется. В пароле не допускается использовать символы: $, ', ", `, знаки скобок и пробел.
radius_certs_certificate_file Имя файла сертификата, который будет использоваться naice-radius при подключении пользователя по протоколу EAP-PEAP.
Добавление сертификатов для работы протокола EAP-TLS (опционально)
Для работы метода аутентификации EAP-TLS, настройка которой подробно рассмотрена в разделе v0.9_4.7 Пример настройки EAP-TLS аутентификации, требуется выпустить сертификат, предназначенный для использования NAICE, и расположить его на хосте, с которого будет запускаться выполнение плейбука Ansible. Для корректной установки требуются:
Сертификат корневого сервера ЦС;
Сертификат для сервера NAICE;
Приватный ключ сертификата сервера NAICE.
Сертификаты требуется расположить в папке плейбуков Ansible roles/docker/files/eap-tls.
В секции переменных плейбука
group_vars/all.yml, отвечающих за установку сертификатов для работы EAP-TLS требуется указать переменные, чтобы включить интеграцию:# параметры для авторизации по протоколу EAP-TLS # параметры сертификатов # для включения установки сертификатов протокола EAP-TLS необходимо расположить файлы сертификатов сервера в папке ansible/roles/docker/files/eap-tls radius_eap_tls_cert_dir_copy: false # включить (true) или выключить (false) копирование сертификатов из директории ansible/roles/docker/files/eap-tls radius_eap_tls_certs_ca_cert_file: trusted_server.crt # имя файла корневого (CA) сертификата radius_eap_tls_certs_private_key_file: trusted_server.k # имя файла приватного ключа сертификата сервера radius_eap_tls_certs_private_key_password: # пароль к файлу приватного ключа сертификата сервера, оставьте пустым, если файл приватного ключа не запаролен radius_eap_tls_certs_certificate_file: trusted_server_chain.crt # имя файла серверного сертификата # настройки проверки статуса отозванных сертификатов по протоколу OCSP radius_eap_tls_ocsp_enable: 'true' # Включение проверки статуса отзыва сертификата по протоколу OCSP radius_eap_tls_ocsp_override_url: 'true' # Использовать URL сервиса OCSP из сертификата radius_eap_tls_ocsp_url: 'http://100.110.2.12/ocsp' # URL для обращения к сервису OCSP radius_eap_tls_ocsp_softfail: 'true' # Мягкая проверка доступа к серверу проверки OSCP, если сервер недоступен, процесс не завершится, а продолжится radius_eap_tls_ocsp_timeout: 0 # Таймаут обращения к серверу OSCP radius_eap_tls_ocsp_use_nonce: 'true' # Позволяет включить одноразовый код в запрос - nonce, который может быть включен в соответствующий ответ
Описание параметров, которые необходимо настроить для работы протокола EAP-TLS:
Параметр Назначение radius_eap_tls_cert_dir_copy Переменная, отвечающая за копирование сертификатов из папки на целевой хост и использование их в сервисе nacie-radius. radius_eap_tls_certs_ca_cert_file Имя файла корневого сертификата ЦС. radius_eap_tls_certs_private_key_file Имя файла приватного ключа сервера. radius_eap_tls_certs_private_key_password Пароль к файлу приватного ключа сервера. Если значение не указано, считается что пароль не используется. В пароле не допускается использовать символы: $, ', ", `, знаки скобок и пробел.
radius_eap_tls_certs_certificate_file Имя файла сертификата, который будет использоваться naice-radius при подключении пользователя по протоколу EAP-TLS. radius_eap_tls_ocsp_enable Включить проверку статуса отзыва сертификата по протоколу OCSP (false | true). По умолчанию false (проверка отключена). radius_eap_tls_ocsp_override_url Откуда брать URL OCSP-сервера: false - использовать URL из сертификата клиента; true - использовать URL из настройки radius_eap_tls_ocsp_url. По умолчанию false. radius_eap_tls_ocsp_url URL для обращения к OCSP-серверу (разрешен только http-режим). radius_eap_tls_ocsp_softfail Поведение в случае недоступности OCSP-сервера (false | true): false - прекратить аутентификацию, если не удается получить доступ; true - продолжить аутентификацию без проверки отзыва сертификата, если OCSP-сервер не доступен. radius_eap_tls_ocsp_timeout Таймаут обращения к серверу OCSP (секунды). По умолчанию 0. radius_eap_tls_ocsp_use_nonce Включить одноразовый код nonce в запрос на проверку сертификата для предотвращения подмены запроса (false | true): false - не включать, true - включить. По умолчанию true.
Прочие переменные (опционально)
При необходимости измените значения других переменных окружения в group_vars/all.yml. Например, можно изменить директорию установки сервисов NAICE или установить адрес NAICE, отличный от адреса управления.
Установка NAICE
Для установки сервисов NAICE в варианте однохостовой инсталляции используется плейбук install-naice.yml.
Запустите плейбук install-naice.yml для установки сервиса контейнеризации Docker, плагина Docker-compose и запуска через этот плагин сервисов NAICE:
ansible-playbook install-naice.yml
Во время установки сервисов NAICE для пользовательских интерфейсов lemmus, gavia и larus автоматически выполняется генерация самоподписанного сертификата. При наличии собственного заверенного сертификата после установки сервисов предусмотрена возможность заменить самоподписанный сертификат на собственный. Подробную информацию об использовании сертификатов безопасности можно найти здесь.
Время запуска контейнеров в связи с использованием механизма healthcheck для проверки успешности старта сервисов может занять до нескольких минут. Дождитесь полного выполнения плейбука.
Проверка состояния сервисов после установки
Проверить успешность запуска контейнеров можно, перейдя в директорию для установки NAICE (по умолчанию - /etc/docker-naice/ ) и выполнив команду для просмотра списка и статуса контейнеров docker compose ps -a. Вывод команды должен быть примерно следующим (ввод может небольшие отличия в зависимости от типа используемой ОС):
$ cd /etc/docker-naice/ /etc/docker-naice$ sudo docker compose ps -a [sudo] password for tester: NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS epg-service naice-build-hosted.registry.eltex.loc/naice/epg-service:1.0-1 "/bin/sh -e /usr/loc…" epg-service 2 days ago Up 2 days (healthy) 0.0.0.0:8100->8100/tcp, :::8100->8100/tcp naice-aquila naice-release.registry.eltex.loc/naice-aquila:0.9 "java -cp @/app/jib-…" naice-aquila 2 days ago Up 2 days (healthy) 0.0.0.0:49->49/tcp, :::49->49/tcp, 0.0.0.0:5703->5703/tcp, :::5703->5703/tcp, 0.0.0.0:8091-8092->8091-8092/tcp, :::8091-8092->8091-8092/tcp naice-bubo naice-release.registry.eltex.loc/naice-bubo:0.9 "java -cp @/app/jib-…" naice-bubo 2 days ago Up 2 days (healthy) 0.0.0.0:8093-8094->8093-8094/tcp, :::8093-8094->8093-8094/tcp naice-castor naice-release.registry.eltex.loc/naice-castor:0.9 "java -Djava.awt.hea…" naice-castor 2 days ago Up 2 days (healthy) 0.0.0.0:8095-8096->8095-8096/tcp, :::8095-8096->8095-8096/tcp naice-gavia naice-release.registry.eltex.loc/naice-gavia:0.9 "java -cp @/app/jib-…" naice-gavia 2 days ago Up 2 days (healthy) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp naice-gulo naice-release.registry.eltex.loc/naice-gulo:0.9 "java -cp @/app/jib-…" naice-gulo 2 days ago Up 2 days (healthy) 0.0.0.0:8089-8090->8089-8090/tcp, :::8089-8090->8089-8090/tcp naice-lemmus naice-release.registry.eltex.loc/naice-lemmus:0.9 "java -cp @/app/jib-…" naice-lemmus 2 days ago Up 2 days (healthy) 0.0.0.0:8083->8083/tcp, :::8083->8083/tcp naice-lepus naice-release.registry.eltex.loc/naice-lepus:0.9 "java -cp @/app/jib-…" naice-lepus 2 days ago Up 2 days (healthy) 0.0.0.0:8087->8087/tcp, :::8087->8087/tcp, 0.0.0.0:67->1024/udp, [::]:67->1024/udp naice-nats naice-build-hosted.registry.eltex.loc/naice/nats:0.7.1 "docker-entrypoint.s…" nats 2 days ago Up 2 days (healthy) 0.0.0.0:4222->4222/tcp, :::4222->4222/tcp, 0.0.0.0:6222->6222/tcp, :::6222->6222/tcp, 0.0.0.0:7777->7777/tcp, :::7777->7777/tcp, 0.0.0.0:8222->8222/tcp, :::8222->8222/tcp naice-ovis naice-release.registry.eltex.loc/naice-ovis:0.9 "java -cp @/app/jib-…" naice-ovis 2 days ago Up 2 days (healthy) 0.0.0.0:5701->5701/tcp, :::5701->5701/tcp, 0.0.0.0:8084-8085->8084-8085/tcp, :::8084-8085->8084-8085/tcp naice-postgres naice-build-hosted.registry.eltex.loc/naice/postgres:0.9.3 "docker-entrypoint.s…" postgres 2 days ago Up 2 days (healthy) 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp naice-radius naice-release.registry.eltex.loc/naice-radius:0.9 "/docker-entrypoint.…" naice-radius 2 days ago Up 2 days (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-sterna naice-release.registry.eltex.loc/naice-sterna:0.9 "/docker-entrypoint.…" naice-sterna 2 days ago Up 2 days (healthy) 80/tcp, 0.0.0.0:8443->444/tcp, [::]:8443->444/tcp naice-ursus naice-release.registry.eltex.loc/naice-ursus:0.9 "java -cp @/app/jib-…" naice-ursus 2 days ago Up 2 days (healthy) 0.0.0.0:8081-8082->8081-8082/tcp, :::8081-8082->8081-8082/tcp naice-vulpus naice-release.registry.eltex.loc/naice-vulpus:0.9 "java -cp @/app/jib-…" naice-vulpus 2 days ago Up 2 days (healthy) 0.0.0.0:5702->5702/tcp, :::5702->5702/tcp, 0.0.0.0:8086->8086/tcp, :::8086->8086/tcp, 0.0.0.0:8088->8088/tcp, :::8088->8088/tcp naice-web naice-release.registry.eltex.loc/naice-web:0.9 "/docker-entrypoint.…" naice-web 2 days ago Up 2 days (healthy) 80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:80->4200/tcp, [::]:80->4200/tcp