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

Параметры конфигурирования Шлюза задаются в конфигурационном файле /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.

Реализована обратная совместимость с прошлым файлом конфигурации: файл /etc/termidesk/gateway.yaml реализует подстановку значений параметров из переменных окружения, которые были заданы в /etc/termidesk/termidesk-gateway.conf.

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

  • отредактировать файл gateway.yaml, указав необходимые значения для параметров:
#
# The default configuration file for Termidesk Gateway, please do not change it.
#

# Объявляем переменную для SSL
_val0: &sslprof0																					
  key: ${sslKey:/etc/termidesk/ssl-cert-snakeoil.key}							# Путь к файлу закрытого ключа
  cert: ${sslCert:/etc/termidesk/ssl-cert-snakeoil.pem}							# Путь к файлу сертификата
  ca: ${sslCa}																	# Путь к файлу цепочки сертификации
  passphrase: ${sslPassPhrase}													# Парольная фраза для соединения SSL
  dhparams: ${sslDhParams}														# Путь к файлу с ключами Диффи-Хеллмана 
																				# для соединения SSL (default "")
  ciphers: ${sslCiphers}														# Используемый алгоритм преобразований 
																				# для соединения SSL (default "")																		

# Gateway серверы (это список, по умолчанию он пустой)
gwservers:
- listen: ${wsServerIP:0.0.0.0}:${wsServerPort:5099}							# IP-адрес и порт для защищенных входящих подключений, 
																				# для IPv6 "[::1]:80" (default ~)
  websocket:																	# Настройка WebSocket
    pingtimeout: ${wsIdleTimeout:30}											# Время пинга «Клиента» в секундах, диапазон [0, 100000], 
																				# если 0, то пинги отключены (default 30)
  checktoken:																	# Настройка проверки токенов
    url: ${urlCheckToken:https://disp.termidesk.local/api/wsproxy/v1.1/verify}	# URL для проверки 
																				# (default "http://127.0.0.1:8080/api/wsproxy/v1/verify")
  tcp_downstream:																# Настройка соединения с сервисами по протоколу TCP
    reconnect: ${gwTCPReconnect:0}												# Количество переподключений, если не задано или равно 0, 
																				# то TCP сессия не восстанавливается, диапазон [0, 10] (default 0)																

- listen: ${wssServerIP:0.0.0.0}:${wssServerPort:10000}							# IP-адрес и порт для защищенных входящих подключений, 
																				# для IPv6 "[::1]:80" (default ~)
  websocket:																	# Настройка WebSocket
    pingtimeout: ${wsIdleTimeout:30}											# Время пинга «Клиента» в секундах, диапазон [0, 100000], 
																				# если 0, то пинги отключены (default 30)															
  checktoken:																	# Настройка проверки токенов
    url: ${urlCheckToken:https://disp.termidesk.local/api/wsproxy/v1.1/verify}	# URL для проверки 
																				# (default "http://127.0.0.1:8080/api/wsproxy/v1/verify")
  tcp_downstream:																# Настройка соединения с сервисами по протоколу TCP
    reconnect: ${gwTCPReconnect:0}												# Количество переподключений, если не задано или равно 0, 
																				# то TCP сессия не восстанавливается, диапазон [0, 10] (default 0)
  ssl: *sslprof0																# Ссылка на настройки заданные в шаблоне SSL (default {})

# ...  Другие шлюзы

# MGT сервер
mgtserver:																							
  listen: ${mgtServerIP:0.0.0.0}:${mgtServerPort:8102}							# IP-адрес и порт запроса сведений о работоспособности Шлюза 
																				# для IPv6 "[::1]:80" (default ~)										
  path: ${healthCheckURL:/api/health}											# Путь запроса информации о работоспособности Шлюза 
																				# (default "/api/health")
  token: ${healthCheckAccessKey}												# Токен валидации (default "")
  ssl: *sslprof0																# Ссылка на настройки заданные в шаблоне SSL (default {})

# RabbitMQ клиент
rabbitmq:
  url: ${coordinatorUrl:amqp://USER:PASS@disp.termidesk.local:5672/termidesk}	# URL подключения к серверу RabbitMQ в формате
																				# "amqp(s)://USER:PASS@<IP-адрес>:<порт>/termidesk", 
																				# где USER и PASS - это необязательные поля (default ~)
  user: ${coordinatorUser:termidesk}											# user - пользователь, если задан, 
																				# то изменяет url.USER (default "")
  pass: ${coordinatorPass:ksedimret}											# RabbitMQ pass - пароль, если задан, 
																				# то изменяет url.PASS (default "")
  timeout: ${coordinatorTimeout}												# RabbitMQ timeout(sec), диапазон [1, 60] (default 10)
  refreshtime: ${coordinatorRefreshTime:60}										# Период (sec) обновления информация на сервере RabbitMQ, 
																				# диапазон [10, 100000] (default 60)
  single: ${coordinatorSingle:true}												# Если true - то данные передаются до первого подтверждения, 
																				# если false - то данные передаются по циклу (бесконечно) 
																				# (default false)
  exchange: ${coordinatorExchange}												# RabbitMQ exchange (default "")
  routingkey: ${coordinatorRoutingKey}											# RabbitMQ routing key (default "termidesk_appnode")

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

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

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

Если переменная окружения существует с пустым значением, то пустое значение будет подставлено в /etc/termidesk/gateway.yaml вместо переменной, а не значение по умолчанию.

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

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

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

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

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

Секция val0: &sslprof0

key: ${sslKey:/etc/termidesk/ssl-cert-snakeoil.key}

Путь к файлу ключа для соединения 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:/etc/termidesk/ssl-cert-snakeoil.pem}Путь к файлу сертификата для соединения SSL. Параметр не имеет значения по умолчанию
ca: ${sslCa}

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

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

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

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

  • wsServerIP - адрес прослушивания входящих подключений;
  • wsServerPort - порт прослушивания службы для входящих подключений.

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

  • wsServerIP:0.0.0.0;
  • wsServerPort:5099.

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

listen:${wssServerIP:0.0.0.0}:${wssServerPort:10000}

При использовании протокола SSL обязательно должна быть настроена секция _val0: &sslprof0.

Порт прослушивания службы может быть назначен любой, здесь приведены стандартные значения. Однако в случае, если нужно назначить порт из диапазона общеизвестных TCP-портов 1 - 1023, следует установить исполняемому файлу /usr/bin/termidesk-gateway разрешение на их использование:

:~$ sudo setcap 'cap_net_bind_service=+ep' /usr/bin/termidesk-gateway
BASH

websocket:

pingtimeout: ${wsIdleTimeout:30}

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

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

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

checktoken:

url: ${urlCheckToken:https://disp.termidesk.local/api/wsproxy/v1.1/verify}

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

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

${urlCheckToken:https://disp.termidesk.local/api/wsproxy/v1.1/verify},

где:

disp.termidesk.local - FQDN узла компонента «Универсальный диспетчер» с ролью «Портал пользователя».

При комплексной установке Termidesk значение disp.termidesk.local может быть заменено на 127.0.0.1.

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

tcp_downstream:

reconnect: ${gwTCPReconnect:0}

Количество переподключений Шлюза к ВМ.

Может принимать значения в интервале с 0 до 10.

Значение по умолчанию:«0»

Секция mgtserver:

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

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

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

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

  • mgtServerIP:127.0.0.1;
  • mgtServerPort:8102

path: ${healthCheckURL:/api/health}

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

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

token: ${healthCheckAccessKey}

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

Значение может быть получено из параметра HEALTH_CHECK_ACCSESS_KEY, определенного в конфигурационном файле /etc/opt/termidesk-vdi/termidesk.conf узла «Универсального диспетчера».

Пример: ${healthCheckAccessKey:270c1e6a4cd013a3824982458a26ec4dcac17f60f80a74098a62994f775351e2},

где:

270c1e6a4cd013a3824982458a26ec4dcac17f60f80a74098a62994f775351e2 - значение, указанное в параметре HEALTH_CHECK_ACCSESS_KEY конфигурационного файла «Универсального диспетчера»

ssl: *sslprof0 Настройка SSL
Секция rabbitmq:
url: ${coordinatorUrl:amqp://USER:PASS@disp.termidesk.local:5672/termidesk}

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

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

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

Пример: ${coordinatorUrl:amqp://USER:PASS@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. Параметр не имеет значения по умолчанию.

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

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

timeout: ${coordinatorTimeout}

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

Пример: ${coordinatorTimeout:10}

refreshtime: ${coordinatorRefreshTime:60}

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

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

Значение по умолчанию: «60»

single: ${coordinatorSingle:true}

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

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

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

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

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

Для проверки состояния Шлюза termidesk-gateway через утилиту curl  нужно:

  • получить значение переменной HEALTH_CHECK_ACCSESS_KEY, определенной в конфигурационном файле /etc/opt/termidesk-vdi/termidesk.conf узла «Универсального диспетчера»;
  • на узле Шлюза предварительно задать переменную окружения HEALTH_CHECK_ACCESS_KEY и присвоить ей полученное значение, например:

:~$ export HEALTH_CHECK_ACCESS_KEY=270c1e6a4cd013a3824982458a26ec4dcac17f60f80a74098a62994f775351e2
BASH
  • выполнить команду проверки состояния Шлюза:
:~$ 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

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

:~$ termidesk-gateway --help
BASH