Параметры конфигурирования компонента

Параметры конфигурирования Шлюза задаются в конфигурационном файле /etc/termidesk/gateway.yaml.

При обновлении компонента «Универсальный диспетчер» и/или  Шлюза termidesk-gateway на версию из состава программного комплекса 5.Х   вместо значения https://127.0.0.1/api/wsproxy/v1/verify для параметра urlCheckToken нужно использовать значение https://127.0.0.1/api/wsproxy/v1.1/verify.

Для задания параметров конфигурирования Шлюза из файла необходимо:

  • отредактировать файл gateway.yaml, указав необходимые значения для параметров. Пример приведен в файле /etc/termidesk/gateway.yaml.example:
# Объявляем переменную для SSL (потом ее используем в качестве ссылки)
_val0: &sslprof0                            # Шаблон для SSL
  key: "/etc/key"                           # SSL Key file name (default "")
  cert: "/etc/cert"                         # SSL Cert file name (default "")
  ca: "/etc/ca"                             # SSL CA file name (default "")
  passphrase: "phrase"                      # SSL PassPhrase (default "")
  dhparams: "/etc/dhparams"                 # SSL DhParams file name (default "")
  ciphers: "ciphers"                        # SSL Cipher (default "")

# Gateway серверы (это список, по умолчанию он пустой)
gwservers:
- listen: "127.0.0.1:9200"                  # IP + port, для IPv6 "[::1]:80" (default ~)
  ssl: *sslprof0                            # SSL настройки (default {})
  websocket:                                # Настройка WebSocket
    pingtimeout: 35                         # Время пинга «Клиента» в секундах, диапазон [0, 100000], если 0, то пинги отключены (default 30)
  checktoken:                               # Настройка проверки токенов
    url: "http://127.0.0.1:80/api/verify"   # URL для проверки (default "http://127.0.0.1:8080/api/wsproxy/v1/verify")
  # ...  Другие шлюзы

# MGT сервер
mgtserver:
  listen: "127.0.0.1:8181"                  # IP + port, для IPv6 "[::1]:80" (default ~)
  path: /api/health                         # Path для запроса информации (default "/api/health")
  token: "abcde12345"                       # Токен валидации (default "")
  ssl: *sslprof0                            # SSL настройки (default {})

# RabbitMQ клиент
rabbitmq:
  url: "amqp://USER:PASS@localhost/"        # URL, где USER и PASS - это необязательные поля (default ~)
  user: "user"                              # user - пользователь, если задан, то изменяет url.USER (default "")
  pass: "pass"                              # RabbitMQ pass - пароль, если задан, то изменяет url.PASS (default "")
  timeout: 40                               # RabbitMQ timeout(sec), диапазон [1, 60] (default 10)
  refreshtime: 80                           # Период (sec) обновления информация на сервере RabbitMQ, диапазон [10, 100'000] (default 60)
  single: true                              # Если true - то данные передаются до первого подтверждения,
                                            # если false - то данные передаются по циклу (бесконечно) (default false)
  exchange: "exchange"                      # RabbitMQ exchange (default "")
  routingkey: "routingkey"                  # RabbitMQ routing key (default "termidesk_appnode")

loglevel:                                   # Логирование сообщений
  info: true                                # Уровень INFO (default true)
  debug: true                               # Уровень DEBUG (default false)
BASH
  • выполнить перезагрузку службы:
:~$ systemctl restart termidesk-gateway.service
BASH

Для получения информации по доступным аргументам командной строки нужно выполнить команду:

:~$ termidesk-gateway --help
BASH

Параметры, используемые в файле /etc/termidesk/gateway.yaml после установки приведены в таблице

Задание параметров может производиться и переменными окружения в формате: ${ENV} или ${ENV:DEFAULT}, где DEFAULT - значение для подстановки, если указанная переменная окружения не найдена.

Например, если нужно задать через переменные окружения адрес IP_ADDR и порт прослушивания службы PORT, то в конфигурационном файле /etc/termidesk/gateway.yaml можно изменить значение следующим образом:

listen: ${IP_ADDR}:${PORT:8000}
BASH

Либо эти значения можно задать напрямую в файле, без использования переменных окружения, тогда запись изменится к виду:

listen: "127.0.0.1:8181"
BASH
Доступные переменные Шлюза

ПараметрОписание

Секция val0: &sslprof0

key: ${sslKey}

Путь к файлу ключа для соединения SSL. Параметр не имеет значения по умолчанию.

При использовании сертификатов и ключей на файлы .key и .pem необходимо выдать права на чтение командой chmod 644:

:~$ sudo chmod 644 /etc/termidesk/ssl-cert-snakeoil.key
:~$ sudo chmod 644 /etc/termidesk/ssl-cert-snakeoil.pem
BASH
cert: ${sslCert}Путь к файлу сертификата для соединения SSL. Параметр не имеет значения по умолчанию
ca: ${sslCa}

Путь к корневому сертификату, на котором выпущен сертификат, указанный в параметре cert. Параметр не имеет значения по умолчанию.

Используется для проверки подлинности указанного в параметре cert сертификата

passphrase: ${sslPassPhrase}Парольная фраза для соединения SSL. Параметр не имеет значения по умолчанию
dhparams: ${sslDhParams}Путь к файлу с ключами Диффи-Хеллмана для соединения SSL. Параметр не имеет значения по умолчанию
ciphers: ${sslCiphers}Используемый алгоритм преобразований для соединения SSL. Параметр не имеет значения по умолчанию
Секция gwservers:
listen: ${wsServerIP:0.0.0.0}:${wsServerPort:5099}

Назначение параметров узла Шлюза:

  • wsServerIP - адрес прослушивания входящих подключений. При распределенной установке указывается значение 0.0.0.0, чтобы порт 5099 прослушивался не только localhost, если планируется принимать запросы на подключения с внешних систем (например, с балансировщиков нагрузки). При комплексной установке Termidesk указывается 127.0.0.1;
  • wsServerPort - порт прослушивания службы для входящих подключений.

Значения по умолчанию:

  • wsServerIP:0.0.0.0;
  • wsServerPort:5099

Для протокола SSL нужно использовать параметры wssServerPort и wssServerPort, но в этом случае будет использоваться порт 10000: wsServerPort:10000

websocket: 

pingtimeout: ${wsIdleTimeout:30}

Таймаут соединения (в секундах) к компоненту «Клиент» Termidesk.

Может принимать значения в интервале с 8 до 960, а также 0 (отключен).

Значение по умолчанию: 30

checktoken:

url: ${urlCheckToken:https://127.0.0.1/api/wsproxy/v1/verify}

Назначение IP-адреса или FQDN компонента «Универсальный диспетчер» для обслуживания API-запросов по состоянию Шлюза.

При обновлении компонента «Универсальный диспетчер» и/или Шлюза termidesk-gateway на версию из состава программного комплекса 5.Х  нужно использовать значение: urlCheckToken:https://127.0.0.1/api/wsproxy/v1.1/verify.

Если программный комплекс Termidesk установлен в распределенном варианте, следует изменить значение 127.0.0.1 на внешний IP-адрес или FQDN балансировщика нагрузки.

Значение по умолчанию: urlCheckToken:https://127.0.0.1/api/wsproxy/v1/verify

Секция mgtserver:

listen: ${mgtServerIP:127.0.0.1}:${mgtServerPort:8102}

Задание параметров для подключения к API Шлюза:

  • mgtServerIP - IP-адрес или FQDN доступа к API Шлюза. Код 200 в ответе на API-запрос свидетельствует о работоспособности Шлюза. При распределенной установке следует задать значение 0.0.0.0 для активации приема запросов с внешних систем;
  • mgtServerPort -  порт доступа к API Шлюза. 

Значения по умолчанию:

  • mgtServerIP:127.0.0.1;
  • mgtServerPort:8102.

Запрос со значениями по умолчанию успешно выполнится только с узла, на котором установлен Шлюз:

:~$ wget http://localhost:8102/api/health 
BASH

path: ${healthCheckURL:/api/health}

Адрес для запросов проверки состояния Шлюза.

Значение по умолчанию: healthCheckURL:/api/health

token: ${healthCheckAccessKey}

Задание ключа доступа для аутентификации запросов к API Шлюза. Параметр не имеет значения по умолчанию.

При задании значения ключа следует руководствоваться правилом, что:

  • размер ключа должен составлять от 0 до 64 символа;
  • должны использоваться символы в шестнадцатеричной системе (0-9, a-f)
ssl: *sslprof0Настройка SSL
Секция rabbitmq:
url: ${coordinatorUrl}

URL, содержащий IP-адрес (или FQDN) и порт (по умолчанию 5672) для подключения к серверу RabbitMQ, а также  очередь - termidesk. Параметр не имеет значения по умолчанию.

Используемый формат: amqp(s)://USER:PASS@<IP-адрес>:<порт>/termidesk.

USER и PASS необязательные параметры, они могут быть заданы в параметрах coordinatorPass и coordinatorPass.

Пример: coordinatorUrl:amqp://termidesk:ksedimret@disp.termidesk.local:5672/termidesk.

На данный момент поддерживается задание только одного URL для подключения к серверу RabbitMQ.

Подключение может использоваться как незащищенное (в этом случае указывается amqp), так и защищенное (amqps).

В случае, если RabbitMQ установлен на том же узле (локально), нужно указать:

coordinatorUrl:amqp://127.0.0.1:5672/termidesk

user: ${coordinatorUser}

Имя пользователя для подключения к серверу RabbitMQ. Параметр не имеет значения по умолчанию.

Если параметр задан, то он меняет значение USER в параметре coordinatorUrl.

При стандартной установке компонента «Универсальный диспетчер» строго по документации в части настроек файла /etc/rabbitmq/definitions.json используется coordinatorUser:termidesk

pass: ${coordinatorPass}

Пароль для подключения серверу RabbitMQ. Параметр не имеет значения по умолчанию.

При стандартной установке компонента «Универсальный диспетчер» строго по документации в части настроек файла /etc/rabbitmq/definitions.json используется coordinatorPass:ksedimret

timeout: ${coordinatorTimeout}Интервал (в секундах)  ожидания ответа от сервера RabbitMQ. Параметр не имеет значения по умолчанию
refreshtime: ${coordinatorRefreshTime}

Интервал (в секундах) обновления (переопубликации) регистрационной информации (URL и другие данные) Шлюза. Параметр не имеет значения по умолчанию.

Значение «0» отключает автоматическую отправку состояния Шлюза на сервер RabbitMQ 

single: ${coordinatorSingle:true}

Способ передачи данных.

Параметр принимает значения:

  • true - данные передаются до первого подтверждения;
  • false - данные передаются по циклу (бесконечно).

Значение по умолчанию: coordinatorSingle:true

exchange: ${coordinatorExchange}Координатор маршрутизации сообщений, определенный в RabbitMQ. Отвечает за маршрутизацию сообщений в разные очереди. Параметр не имеет значения по умолчанию
routingkey: ${coordinatorRoutingKey}Ключ маршрутизации RabbitMQ, используется для маршрутизации задачи в очереди. Параметр не имеет значения по умолчанию
Секция loglevel:
info: ${logInfo:true}Активация режима журналирования уровня INFO
debug: ${logDebug:false}Активация подробного режима журналирования уровня DEBUG

Пример команды проверки состояния компонента через утилиту  curl для Шлюза  termidesk-gateway:

:~$ curl -v -s -X 'GET' "${HOSTNAME}:8102/api/health" -H 'accept: application/json' -H "Authorization: Token ${HEALTH_CHECK_ACCESS_KEY}" --fail -w "\n%{http_code}\n"
BASH