- Создал(а) Филатов Илья Олегович апр. 25, 2025
Проверка конфигурации
Перед установкой сервиса SL-Gate следует перепроверить, что в конфигурацию были внесены все требуемые изменения.
Для этого ниже приведены примеры всех полных файлов конфигурации, которые редактировались в рамках данного документа:
---
# Параметры установки платформы.
iot:
# Имя (IP-адрес) сервера, на котором будет производиться развертывание платформы IoT.
# ВАЖНО!!! В 'serverName' нужно прописывать то имя (IP-адрес), по которому будет доступна платформа.
serverName: "external.iot.address"
# Содержит путь до директории, в которую будет произведена установка.
installDir: /storage/iot
# Ссылка на политику конфиденциальности
privacyPolicyUrl: "my.privacy.policy"
# Ссылка на базу знаний
knowledgeBaseUrl: "https://docs.eltex-co.ru/display/EKB/IoT"
# Параметры MongoDB.
mongodb:
# Версия MongoDB. На старом железе, не поддерживающем оптимизацию, нужно выставить значение `4`.
version: 6
external:
# Если имеет значение true, будет использоваться внешняя MongoDB.
# ВАЖНО!!! MongoDB должна быть настроена, а параметры подключения нужно указать в 'addr' и 'port'.
enable: false
# Адрес внешней MongoDB.
addr: "external.mongodb.address"
# Порт внешней MongoDB.
port: 27017
# Параметры WEB.
web:
# Порт HTTP, по которому будет осуществляться доступ в WEB.
httpPort: 80
# Порт HTTPS, по которому будет осуществляться доступ в WEB.
httpsPort: 443
# Автоматически перенаправлять запросы по порту HTTP на порт HTTPS
redirectHttpToHttps: true
# Нужно ли использовать HTTPS при формировании ссылок на WEB ('true' по умолчанию, при этом будет использован порт,
# указанный в 'iot.web.httpsPort'). Если поставить в 'false', будет использован HTTP и порт,
# указанный в 'iot.web.httpPort'.
useHttpsByDefault: true
nginx:
# Максимальное число соединений, которые одновременно может открыть рабочий процесс
worker_connections: 2048
# Ограничение скорости обработки запросов модулем Nginx Rate Limiting
rateLimit:
enable: true
certbot:
# Использовать ли certbot для получения сертификатов Let's Encrypt.
enable: false
# Email владельца домена. Необходим для подтверждения валидности домена при получении сертификата Let's Encrypt.
email: test@email.com
fail2ban:
enable: true
# Параметры сервера отправки email.
mail:
smtp:
submitter: test@email.com
password: "password"
senderPrefix: "Сервер Eltex-SC"
auth: "true"
host: email.com
port: 587
# Протокол шифрования, используемый при подключении к серверу. Допустимые значения: none, starttls, ssl.
protection: starttls
# Параметры authorization server.
authorization:
# Уровень отладки внутри IoT Authorization Server.
logLevel: INFO
# Уровень сложности captcha: easy, medium, hard
captchaLevel: "easy"
# Параметры для управления доступностью саморегистрации.
selfRegistration:
allow: true
allowDemo: true
allowSocialNetworks: false
# Параметры клиентских регистраций (через соцсети).
clientRegistrations:
google:
enable: true
clientId: "GoogleClientIdChangeMe"
clientSecret: "GoogleClientSecretChangeMe"
microsoft:
enable: true
clientId: "MicrosoftClientIdChangeMe"
clientSecret: "MicrosoftClientSecretChangeMe"
apple:
enable: true
clientId: "AppleClientIdChangeMe"
keyId: "AppleKeyIdChangeMe"
teamId: "AppleTeamIdChangeMe"
yandex:
enable: true
clientId: "YandexClientIdChangeMe"
clientSecret: "YandexClientSecretChangeMe"
vk:
enable: true
clientId: "VkClientIdChangeMe"
clientSecret: "VkClientSecretChangeMe"
mailRu:
enable: true
clientId: "MailRuClientIdChangeMe"
clientSecret: "MailRuClientSecretChangeMe"
skills:
# Параметры навыка Яндекс для интеграции с Умным домом (Алисой). Отображается в карточке навыка.
yandex:
enabled: false
# Параметры для Basic Authentication.
clientId: "YandexClientIdChangeMe"
password: "PasswordChangeMe"
# Id навыка, который необходимо указывать при отправке уведомлений.
skillId: ""
# OAuth-токен, который необходимо указывать при отправке уведомлений.
oauthToken: ""
# Параметры проекта умного дома Сбера для интеграции с Салютом. Отображается в карточке проекта.
sber:
enabled: false
# Параметры для Basic Authentication.
clientId: "SberClientIdChangeMe"
password: "PasswordChangeMe"
# Bearer-токен, который необходимо указывать при отправке уведомлений.
bearerToken: ""
# Параметры проекта умного дома Mail.ru для интеграции с Марусей. Отображается в карточке проекта/приложения.
marusya:
enabled: false
# Параметры для Basic Authentication.
clientId: "MarusyaClientIdChangeMe"
password: "PasswordChangeMe"
# App ID, который был назначен приложению VK при создании.
appId: "MarusyaAppIdChangeMe"
# OAuth-токен, который необходимо указывать при отправке уведомлений.
oauthToken: ""
# Параметры платформы IoT Core
core:
# Уровень отладки внутри IoT Core
logLevel: INFO
# Порты платформы для подключения Z-Wave-контроллеров
ctlGate:
port: 8070
tcpPort: 8069
sslPort: 8072
links:
# Нужно ли использовать HTTPS при формировании ссылок на ресурсы самой платформы (например, прошивки).
useHttpsForApi: false
# Нужно ли использовать HTTPS при формировании ссылок на фото с камер наблюдения.
useHttpsForCameraLinks: true
# Нужно ли использовать 'iot.web.httpPort'/'iot.web.httpsPort' при формировании ссылок на API.
useUiProxyForApi: true
push:
firebase:
enabled: false
apns:
enabled: false
# Параметры для работы с видеосерверами
video:
# Параметры Flussonic.
flussonic:
url: ""
apiKey: ""
operatorId: ""
adminLogin: ""
motion:
enabled: false
# Параметры видеосервера EVI
evi:
url: ""
apiKey: ""
operatorId: ""
adminLogin: ""
acquiring:
# Период после завершения действия последней подписки, в течение которого услуга продолжает (ограниченно) действовать
advancePeriod: 3d
paykeeper:
url: "CHANGE_ME"
secret: "PaykeeperSecretChangeMe"
user: "PaykeeperUsernameChangeMe"
password: "PaykeeperPasswordChangeMe"
# Настройки ИК-пульта
irc:
# Время ожидания ИК команды от пользователя
recTimeout: 15s
# Таймаут записи команды (отсутствия фронтов)
cmdTimeout: 100ms
# Настройки охраны
guard:
# Время, которое дается на включение FLIRS-устройств (ждем подтверждение от контроллера)
# при постановке на охрану.
deviceRequestDelay: 15s
# Время, которое прибавляется ко времени задержки на очистку охранного кэша при постановке/снятии с охраны
# на случай если охрана не завершила процесс постановки/снятия.
# Время задержки равняется количеству охранных устройств, умноженному на deviceRequestDelay.
clearContextExtraCacheDelay: 1m
# Параметры установки сервисов логирования (Elasticsearch + Logstash + Kibana).
elk:
# Нужно ли добавлять в платформу appender, отправляющий логи в logstash.
# В нем нет необходимости, если ELK не развернут или не настроен; это лишь спровоцирует сообщения об ошибках отправки
# в логах платформы.
enable: false
# Имя (IP-адрес) сервера, на котором будет развернут ELK.
# По умолчанию совпадает с 'iot.serverName', что предполагает установку рядом с платформой (на том же хосте).
# В таком случае хосты в инвентаре в группах [iot] и [monitoring] должны совпадать.
serverName: "{{ iot.serverName }}"
# Директория для установки системы логирования.
installDir: /storage/elk
# Параметры установки сервисов мониторинга (Prometheus + Grafana).
monitoring:
# Имя (IP-адрес) сервера, на котором будут развернуты сервисы мониторинга (Prometheus + Grafana).
# По умолчанию совпадает с 'iot.serverName', что предполагает установку рядом с платформой (на том же хосте).
# В таком случае хосты в инвентаре в группах [iot] и [elk] должны совпадать.
serverName: "{{ iot.serverName }}"
# Директория для установки системы мониторинга.
installDir: /storage/monitoring
slgate:
# Имя сервера, на котором будет развернут SLGATE.
# ВАЖНО!!! Нельзя использовать IP-адрес, т.к. такая схема не будет работать!
# По умолчанию совпадает с 'iot.serverName', что предполагает установку рядом с платформой (на том же хосте).
# В таком случае хосты в инвентаре в группах [iot] и [slgate] должны совпадать.
serverName: "********.ru"
# Директория для установки SLGATE.
installDir: /storage/slgate
---
# Версия контейнеров.
release: "1.34"
swarm:
enabled: false
# Имя stack-а для запуска в docker-swarm.
stack: swarm_iot
# Имя репозитория docker registry, содержащего docker-образы для развертывания.
registry: hub.eltex-co.ru
# Список сервисов для перезапуска (при запуске плейбуков restart_*.yml).
# Можно оставить пустым, а при запуске передавать параметром командной строки.
services: []
# Нужно ли выполнять подготовку дистрибутива к установке. Этот шаг полезен при "чистой" установке
# на только что созданный сервер. Если ранее уже была выполнена установка компонентов IoT через ansible,
# то такая подготовка не требуется и этот шаг можно пропустить для экономии времени.
withDistroPreparingStep: true
# Суффикс, добавляемый к имени каждого контейнера (помогает избежать конфликта имен контейнеров).
containerNameSuffix: ""
# Суффикс, добавляемый к имени создаваемой сети docker (помогает избежать конфликта имен сетей docker).
networkNameSuffix: ""
# Параметры сервисов IoT (для docker-compose), сгруппированные по именам.
# 'enable' — должен ли присутствовать сервис в docker-compose.yml.
# 'port.map' — номер порта сервиса в сети хоста.
# 'port.export' — нужно ли выполнять маппинг порта из контейнера в сеть хоста.
# 'db.name' м имя БД, используемой сервисом (связкой сервисов).
iot:
# Параметры мониторинга использования дискового пространства. Должны соответствовать требованию:
# warnThreshold > criticalThreshold > 0, иначе мониторинг дискового пространства будет отключен.
diskUsage:
# Порог дискового пространства (в %), при достижении которого все логгеры микросервисов переводятся в режим WARN
# (отображаются сообщения с тегами WARN и ERROR). Количество бэкапов баз уменьшается пропорционально приближению к
# порогу criticalThreshold.
warnThreshold: 20
# Порог дискового пространства (в %), при достижении которого все логгеры микросервисов переводятся в режим ERROR
# (отображаются только сообщения с тегом ERROR). Бэкапы баз не выполняются.
criticalThreshold: 10
# Нужно ли установить лимиты на сервисы в docker compose
limits:
enable: false
replication:
core:
enabled: false
replicaCount: 1
mqttBroker:
enabled: false
replicaCount: 2
zwayproxy:
enabled: false
replicaCount: 1
wsproxy:
enabled: false
replicaCount: 1
mongodb:
limits:
enable: false
cpus: 1.0
memory: 4G
port:
map: 27017
export: false
broker:
logLevel: INFO
limits:
enable: true
cpus: 1.0
memory: 4G
external:
# Будет ли развернут брокер на стороннем хосте.
enable: false
# Нужно ли устанавливать брокер на сторонний хост средствами ansible.
install: false
# Если установка брокера на сторонний хост будет выполняться средствами ansible, то в какую директорию.
installDir: /storage/broker
# Внешний адрес стороннего хоста, по которому к брокеру будут подключаться платформа и устройства.
host: "external.broker.address"
port:
map: 8883
internal:
port:
map: 8083
export: false
db:
name: iot-broker
jconsole:
enable: false
port: 32002
# Необходимо указать адрес хоста, куда будет подключаться jconsole-клиент.
# При развертывании докера здесь указывается адрес хоста, где работает докер.
host: "10.20.30.40"
hivemq:
rootFolder: /hivemq/
olapservice:
logLevel: INFO
limits:
enable: true
cpus: 1.0
memory: 4G
external:
# Будет ли развернут olapservice на стороннем хосте.
enable: false
# Нужно ли устанавливать olapservice на сторонний хост средствами ansible.
install: false
# Если установка olapservice на сторонний хост будет выполняться средствами ansible, то в какую директорию.
installDir: /storage/olapservice
# Внешний адрес стороннего хоста, по которому платформа будет подключаться к olapservice.
host: "external.olapservice.address"
port:
map: 8023
export: false
db:
name: iotcore
# Нужно ли устанавливать clickhouse (полезно для разработки olapservice).
install: true
limits:
enable: false
cpus: 1.0
memory: 4G
port:
map: 8123
export: false
captcha:
enable: true
limits:
enable: true
cpus: 1.0
memory: 4G
port:
map: 8088
export: false
caseSensitive: true
allowedSizes:
- "312x45"
- "270x40"
instance: "captcha:8088"
proportion: 100
zscaptcha:
enable: false
limits:
enable: true
cpus: 1.0
memory: 4G
port:
map: 8089
export: false
caseSensitive: true
instance: "zs-captcha:8089"
proportion: 0
authorization:
# Развертывание окружения без auth server, полезно для разработки auth server.
enable: true
# API-ключ для авторизации HTTP-запросов в сервис авторизации от внешних систем, таких как Core.
# Специальное значение 'autogenerated' означает, что apiKey будет сгенерирован в процессе установки.
apiKey: "autogenerated"
limits:
enable: true
cpus: 1.0
memory: 4G
external:
host: "external.authorization.address"
port:
map: 8091
export: false
ssl:
map: 8093
export: false
db:
name: iot-authorization-server
jconsole:
enable: false
port: 32003
# Необходимо указать адрес хоста, куда будет подключаться jconsole-клиент.
# При развертывании докера здесь указывается адрес хоста, где работает докер.
host: "10.20.30.40"
swagger:
enable: false
rabbit:
eventQueue:
name: platform-rpc-event-queue
# Количество консьюмеров на стороне платформы
platformConsumers:
# Данный параметр не может быть больше чем maxCount.
count: 16
# Максимальное количество одновременных консьюмеров очереди.
maxCount: 16
core:
# Развертывание окружения без платформы, полезно для разработки core.
enable: true
limits:
enable: true
cpus: 1.0
memory: 4G
port:
map: 8071
export: false
ssl:
map: 8073
export: false
db:
name: iot-core
# Имена устаревших БД в MongoDB, используемые платформой.
deprecated:
fs:
name: iot-fs
licenses:
name: iot-licenses
events:
name: iot-events
jconsole:
enable: false
port: 32001
# Необходимо указать адрес хоста, куда будет подключаться jconsole-клиент.
# При развертывании докера здесь указывается адрес хоста, где работает докер.
host: "10.20.30.40"
swagger:
enable: false
broker:
# Нужно ли платформе пытаться подключиться к MQTT Broker.
enable: true
threadPools:
main:
size: 16
olapservice:
# Нужно ли платформе пытаться подключиться к OlapService.
enable: true
mjollnir:
# URL для Mjollnir.
url: "http://smart.eltex-co.ru:8078/api/v1"
slgate:
instances:
- slgate:4443
ignoreServerCertCheck: false
video:
evi:
ignoreServerCertCheck: false
checkEventSenderAddress: true
# Параметры WebRTC, которые необходимы камере для формирования своих ICE-кандидатов.
webrtc:
# Параметры STUN-сервера.
stun:
# URL STUN-серверов.
urls:
- "stun.example1.com:3478"
- "stun.example2.com:3478"
# Параметры TURN-сервера.
turn:
# Параметры TURN:SFU
sfu:
# Принудительное включение
force: false
# Таймаут на ожидание ивента от EVI о начале webrtc-сессии между камерой и TURN:SFU
eventTimeout: 10s
# Параметры P2P
p2p:
# Таймаут на ожидание SDP-answer от камеры
sdpAnswerTimeout: 60s
# Время ожидания проверки камерой типа своего NAT
checkCameraNatTypeTimeout: 10s
# Время выполнения ping к host candidate клиента
pingHostCandidateTimeout: 10s
web:
# Развертывание окружения без WEB, полезно для разработки web.
enable: true
limits:
enable: true
cpus: 1.0
memory: 4G
hazelcast:
clusterName: iot-core
instanceName: iot-core-hazelcast-instance
limits:
enable: true
cpus: 1.0
memory: 4G
external:
port:
map: 5701
export: false
rabbitmq:
limits:
enable: true
cpus: 1.0
memory: 4G
admin:
user: guest
password: guest
port:
map: 15671
export: true
sslPort:
map: 15672
export: true
port:
map: 5672
export: false
zwayproxy:
enable: true
logLevel: INFO
external:
enable: false
limits:
enable: true
cpus: 1.0
memory: 4G
port:
map: 8070
export: true
sslPort:
map: 8072
export: true
rabbit:
queue:
# Идентификатор очереди для отправки сообщений из прокси в платформу.
platform: zway-proxy-platform
exchange:
# Идентификатор топик-коллектора.
proxy: zway-proxy-topic-exchange
# Количество консьюмеров на стороне платформы
platformConsumers:
# Данный параметр не может быть больше чем maxCount.
count: 16
# Максимальное количество одновременных консьюмеров очереди.
maxCount: 16
# Количество консьюмеров на стороне zwayProxy service
proxyConsumers:
# Количество одновременных консьюмеров очереди. Данный параметр не может быть больше чем maxCount.
count: 1
# Максимальное количество одновременных консьюмеров очереди.
maxCount: 1
wsproxy:
logLevel: INFO
maxConnections: 25000
external:
enable: false
# Адрес хоста, куда nginx будет проксировать запросы.
host: "1.2.3.4"
port: 8075
limits:
enable: true
cpus: 1.0
memory: 4G
port:
map: 8075
export: true
rabbit:
queue:
# Идентификатор очереди для отправки сообщений из прокси в платформу.
platform: ws-proxy-platform
exchange:
# Идентификатор топик-коллектора.
proxy: ws-proxy-topic-exchange
# Количество консьюмеров на стороне платформы
platformConsumers:
# Данный параметр не может быть больше чем maxCount.
count: 16
# Максимальное количество одновременных консьюмеров очереди.
maxCount: 16
# Количество консьюмеров на стороне wsProxy service
proxyConsumers:
# Количество одновременных консьюмеров очереди. Данный параметр не может быть больше чем maxCount.
count: 16
# Максимальное количество одновременных консьюмеров очереди.
maxCount: 16
slgate:
db:
name: "activator"
user: "activator"
password: "activator"
port:
map: 5432
export: false
vpn:
port:
map: 1194
protocol: udp
maxClients: 1024
easyrsa:
req:
country: "RU"
province: "Novosibirsk"
city: "Novosibirsk"
organization: "Eltex"
organizationUnit: "EMS"
email: "eltex@eltex-co.ru"
activator:
port:
map: 8899
export: false
proxy:
scheme: "https://"
useClientCert: true
clientCertPassword: "CHANGE_ME"
port:
map: 4443
# Параметры сервисов ELK (для docker-compose), сгруппированные по именам.
# 'port.map' - номер порта сервиса в сети хоста.
# 'port.export' - нужно ли выполнять маппинг порта из контейнера в сеть хоста.
elk:
elasticsearch:
rest:
port:
map: 9200
nodes:
port:
map: 9300
logstash:
port:
map: 5001
api:
port:
map: 9600
kibana:
port:
map: 5601
# Параметры сервисов мониторинга (для docker-compose), сгруппированные по именам.
# 'port.map' - номер порта сервиса в сети хоста.
# 'port.export' - нужно ли выполнять маппинг порта из контейнера в сеть хоста.
monitoring:
prometheus:
port:
map: 9090
# Период опроса сервисов со стороны Prometheus в секундах. Небольшие значения (менее десятков секунд) значительно
# увеличат нагрузку на сеть.
# При изменении параметра рекомендуется поменять переменную grafana.scrapeInterval на значение не ниже указанного
# для Prometheus, чтобы не терять метрики.
scrapeInterval: 60
grafana:
port:
map: 3000
# Период опроса Prometheus со стороны Grafana в секундах.
scrapeInterval: 60
nginxExporter:
enable: false
port:
map: 9113
Установка сервиса SL-Gate
По завершении конфигурации сервиса SL-Gate, необходимо произвести его установку на сервер при помощи следующих команд:
cd /etc/ansible-iot/latest sudo ansible-playbook install_monitoring.yml
Пример вывода команд по установке сервиса:
PLAY [Install SLGATE] ********************************************************************************************************************************************************************************************* TASK [Gathering Facts] ******************************************************************************************************************************************************************************************** ok: [localhost] TASK [Include registry hub.eltex-co.ru parameters] **************************************************************************************************************************************************************** ok: [localhost] TASK [Include slgate parameters] ********************************************************************************************************************************************************************************** ok: [localhost] TASK [Correct ansible_become variable] **************************************************************************************************************************************************************************** ok: [localhost] TASK [include_tasks] ********************************************************************************************************************************************************************************************** included: /etc/ansible-iot/latest/include/get_timezone.yml for localhost TASK [include_tasks] ********************************************************************************************************************************************************************************************** included: /etc/ansible-iot/latest/include/get_timezone/systemd.yml for localhost TASK [Get current timezone of host via systemd] ******************************************************************************************************************************************************************* changed: [localhost] TASK [include_tasks] ********************************************************************************************************************************************************************************************** included: /etc/ansible-iot/latest/include/distros/Ubuntu.yml for localhost TASK [Remove old versions of docker for Ubuntu 22.04] ************************************************************************************************************************************************************* ok: [localhost] => (item=docker-compose) ok: [localhost] => (item=docker) ok: [localhost] => (item=docker-engine) ok: [localhost] => (item=docker.io) ok: [localhost] => (item=containerd) ok: [localhost] => (item=runc) TASK [Install utils and components for Ubuntu 22.04] ************************************************************************************************************************************************************** ok: [localhost] => (item=ca-certificates) ok: [localhost] => (item=curl) ok: [localhost] => (item=gnupg) ok: [localhost] => (item=lsb-release) TASK [Get Ubuntu release codename] ******************************************************************************************************************************************************************************** changed: [localhost] TASK [Add key for official docker repository to Ubuntu 22.04] ***************************************************************************************************************************************************** changed: [localhost] TASK [Add official docker repository to Ubuntu 22.04] ************************************************************************************************************************************************************* changed: [localhost] TASK [Install docker and components for Ubuntu 22.04] ************************************************************************************************************************************************************* ok: [localhost] => (item=docker-ce) ok: [localhost] => (item=docker-ce-cli) ok: [localhost] => (item=containerd.io) ok: [localhost] => (item=docker-buildx-plugin) ok: [localhost] => (item=docker-compose-plugin) ok: [localhost] => (item=python3-cryptography) ok: [localhost] => (item=python3-requests) ok: [localhost] => (item=python3-docker) TASK [Copy configs needed for docker images] ********************************************************************************************************************************************************************** changed: [localhost] TASK [Prepare docker-compose.yml] ********************************************************************************************************************************************************************************* changed: [localhost] TASK [Prepare .env file for docker-compose] *********************************************************************************************************************************************************************** changed: [localhost] TASK [Check and create directory /storage/slgate/postgres/data] *************************************************************************************************************************************************** changed: [localhost] TASK [Check and create directory /storage/slgate/gate/etc/easy-rsa] *********************************************************************************************************************************************** changed: [localhost] TASK [Prepare easy-rsa vars] ************************************************************************************************************************************************************************************** changed: [localhost] TASK [Check and create directory /storage/slgate/gate/etc/openvpn/server] ***************************************************************************************************************************************** changed: [localhost] TASK [Prepare config for openvpn server] ************************************************************************************************************************************************************************** changed: [localhost] TASK [Check and create directory /storage/slgate/gate/etc/openvpn/keys] ******************************************************************************************************************************************* changed: [localhost] TASK [Check and create directory /storage/slgate/gate/var/log/openvpn] ******************************************************************************************************************************************** changed: [localhost] TASK [Check and create directory /storage/slgate/gate/var/lib/bind] *********************************************************************************************************************************************** changed: [localhost] TASK [Check and create directory /storage/slgate/gate/var/log/bind] *********************************************************************************************************************************************** changed: [localhost] TASK [Check and create directory /storage/slgate/gate/etc/eltex-slgate] ******************************************************************************************************************************************* changed: [localhost] TASK [Prepare config for activator] ******************************************************************************************************************************************************************************* changed: [localhost] TASK [Check and create directory /storage/slgate/gate/var/log/eltex-sl-gate-activator] **************************************************************************************************************************** changed: [localhost] TASK [Check and create directory /storage/slgate/gate/etc/nginx/conf.d] ******************************************************************************************************************************************* changed: [localhost] TASK [Prepare config for nginx] *********************************************************************************************************************************************************************************** changed: [localhost] TASK [Generate an OpenSSL Certificate for web] ******************************************************************************************************************************************************************** included: /etc/ansible-iot/latest/include/generate_cert.yml for localhost TASK [Check and create directory /storage/slgate/gate/ssl/private] ************************************************************************************************************************************************ changed: [localhost] TASK [Check and create directory /storage/slgate/gate/ssl/certs] ************************************************************************************************************************************************** ok: [localhost] TASK [Check and create directory /storage/slgate/gate/ssl/csr] **************************************************************************************************************************************************** changed: [localhost] TASK [Check that the slgate.key already exists] ******************************************************************************************************************************************************************* ok: [localhost] TASK [Check that the slgate.crt already exists] ******************************************************************************************************************************************************************* ok: [localhost] TASK [Generate an OpenSSL private key slgate.key] ***************************************************************************************************************************************************************** changed: [localhost] TASK [Generate an OpenSSL Certificate Signing Request with Subject information slgate.csr] ************************************************************************************************************************ changed: [localhost] TASK [Generate a Self Signed OpenSSL certificate slgate.crt] ****************************************************************************************************************************************************** changed: [localhost] TASK [Check and create directory /storage/slgate/gate/var/www/openvpn] ******************************************************************************************************************************************** changed: [localhost] TASK [Check and create directory /storage/slgate/gate/var/log/nginx] ********************************************************************************************************************************************** changed: [localhost] TASK [Create a slgate network with options] *********************************************************************************************************************************************************************** changed: [localhost] TASK [Tear down slgate] ******************************************************************************************************************************************************************************************* changed: [localhost] TASK [Remove easy-rsa PKI] **************************************************************************************************************************************************************************************** ok: [localhost] TASK [Tear down postgres] ***************************************************************************************************************************************************************************************** changed: [localhost] TASK [Remove postgres db] ***************************************************************************************************************************************************************************************** changed: [localhost] TASK [Create and start slgate services] *************************************************************************************************************************************************************************** changed: [localhost] TASK [include_tasks] ********************************************************************************************************************************************************************************************** included: /etc/ansible-iot/latest/include/docker_prune.yml for localhost TASK [Prune unused images, containers and networks] *************************************************************************************************************************************************************** changed: [localhost] TASK [Prune unused volumes] *************************************************************************************************************************************************************************************** changed: [localhost] PLAY RECAP ******************************************************************************************************************************************************************************************************** localhost : ok=51 changed=35 unreachable=0 failed=0 skipped=9 rescued=0 ignored=0
В выводе команды необходимо дождаться появления строки "PLAY RECAP" и убедиться, что параметры unreachable и failed на следующей строке равны нулю, что означает успешную установку сервиса.
Если любой из этих параметров не равен нулю, то в процессе установки сервиса произошла ошибка. В таком случае в выводе команды будет присутствовать задача, статус которой равен failed или unreachable. Изучение текста ошибки этой задачи поможет выявить причину проблемы и исправить её.
Проверка работоспособности
1. После успешной установки сервиса проверьте состояние контейнеров сервиса мониторинга при помощи следующей команды:
sudo docker ps -a
Вывод данной команды должен иметь следующий вид:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0933bb3eabfb hub.eltex-co.ru/iot/iot-slgate:1.34 "/docker-entrypoint.…" 3 minutes ago Up 3 minutes (unhealthy) 80/tcp, 0.0.0.0:1194->1194/udp, [::]:1194->1194/udp, 0.0.0.0:4443->4443/tcp, [::]:4443->4443/tcp iot-slgate dc956cea6057 hub.eltex-co.ru/iot/iot-postgres:1.34 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 5432/tcp iot-postgres
Запуск всех контейнеров занимает до 3 минут.
Необходимо убедиться, что все контейнеры имеют статус Up и не происходит их перезапуска (статус Restarting).
В выводе команды должны присутствовать следующие контейнеры:
| Название контейнера | Ожидаемый статус |
|---|---|
| iot-slgate | Up (healthy) |
| iot-postgres | Up |
- Нет меток