Система 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 на хост, с которого есть доступ по 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.
NAICE является лицензируемым продуктом, для активации функционала необходима лицензия. См. v0.9_2. Лицензирование. На момент установки наличие лицензии необязательно, активировать продукт можно. До активации лицензии используется демо режим, в котором ограничено максимально количество сетевых устройств, активных эндпоинтов, активных гостевых эндпоинтов количеством 15 шт. |
Для разворачивания системы в онлайн режиме необходимо скачать и поместить на хост, с которого будет выполняться запуск плейбука архив: ansibleNaice-v09-06-07-2025.tar.gz
wget https://cloud.eltex-co.ru/index.php/s/Ra8omYUj08lKFZq/download -O ansibleNaice-v09-06-07-2025.tar.gz |
Затем необходимо распаковать архив:
tar xzvf ansibleNaice-v09-06-07-2025.tar.gz |
Зайти в папку с плейбуками:
cd ansibleNaice-v09-06-07-2025 |
Установите утилиту 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. |
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"
} |
Для корректного отображения времени в системе NAICE необходимо задать следующий параметр в файле конфигурации group_vars/all.yml.
Формат переменной:
time_zone: "Регион/Город" |
Между 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}} |
Система NAICE поддерживает подключение к серверу лицензирования Online ELM через HTTP-proxy сервер.
Поддерживаемые режимы работы:
Подключение через HTTP-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, необходимо указать адрес сервера в файле переменных плейбука 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"} |
Сертификат корневого сервера ЦС;
Сертификат для сервера 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, настройка которой подробно рассмотрена в разделе 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 в варианте однохостовой инсталляции используется плейбук install-naice.yml.
Запустите плейбук install-naice.yml для установки движка Docker, плагина Docker-compose и запуска через этот плагин сервисов NAICE:
если PostgreSQL планируется устанавливать в docker-контейнере (по умолчанию):
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 |
Условные обозначения:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||