Настройка apache2

Вместе с Оркестратором будет установлен сервер apache2, если он не был установлен ранее.

После установки Оркестратора необходимо скорректировать файл конфигурации веб-сервера /etc/apache2/apache2.conf. Для этого следует найти и раскомментировать строку с параметром AstraMode, далее присвоить данному параметру значение off, точно соблюдая отступы и пробелы в файле.

Пример:

# Astra security mode.
#
AstraMode off
BASH

После перезапустить веб-сервер командой:

:~$ sudo systemctl restart apache2
BASH

Настройка Оркестратора

Для настройки оркестратора необходимо отредактировать разделы Termidesk params и OpenStack params в файле /opt/termidesk/share/termidesk-orchestrator/src/config/orc_config.py.

При первой установке этот конфигурационный файл отсутствует. Его можно скопировать из шаблона /opt/termidesk/share/termidesk-orchestrator/src/config/orc_config.py.dist, для этого выполнить следующие действия:

  • перейти в каталог с конфигурационными файлами:
:~$ cd /opt/termidesk/share/termidesk-orchestrator/src/config
BASH
  • переключиться на пользователя termidesk:
:~$ sudo -u termidesk bash
BASH
  • скопировать шаблон в новый файл:
:~$ cp orc_config.py.dist orc_config.py
BASH
  • выйти из окружения пользователя termidesk:
:~$ exit
BASH

Параметры внутри разделов конфигурационного файла /opt/termidesk/share/termidesk-orchestrator/src/config/orc_config.py имеют следующую структуру:

ВНУТРЕННЯЯ_ПЕРЕМЕННАЯ = os.getenv("ПЕРЕМЕННАЯ_ОКРУЖЕНИЯ", "ЗНАЧЕНИЕ_ВВОДИМОЕ_ВРУЧНУЮ")
BASH

где:

ПЕРЕМЕННАЯ_ОКРУЖЕНИЯ - наименование переменной окружения, назначенной через команду export. Если переменная в окружении не задана, она добавится с указанным значением;

ЗНАЧЕНИЕ_ВВОДИМОЕ_ВРУЧНУЮ - новое значение переменной.

Пример файла /opt/termidesk/share/termidesk-orchestrator/src/config/orc_config.py:

# Termidesk params
TERMIDESK_HOST = os.getenv("TSRV_HOST", '')
TERMIDESK_PORT = os.getenv("TERMIDESK_PORT", "")
TERMIDESK_USERNAME = os.getenv("TSRV_USERNAME", '')
TERMIDESK_PASSWORD = os.getenv("TSRV_PASSWORD", '')
#Termidesk auth domain ID: authSmallName
 TERMIDESK_AUTH = os.getenv("TSRV_AUTH", '')
TERMIDESK_AUTH_URL = os.getenv('TSRV_AUTH_URI', '/api/auth/draft/legacy/login')
 
# OpenStack params
# The name of application credentials
APP_CREDENTIALS_NAME = os.getenv("APP_CREDENTIALS_NAME", "")
# The secret for application credentials
APP_CREDENTIALS_SECRET = os.getenv("APP_CREDENTIALS_SECRET", "")
# The user name for application credentials
APP_CREDENTIALS_USER_NAME = os.getenv("APP_CREDENTIALS_USER_NAME", "")
# The name of user domain for application credentials
APP_CREDENTIALS_USER_DOMAIN = os.getenv("APP_CREDENTIALS_USER_DOMAIN", "")
# The url of application credentials authentication. Example: http://0.0.0.0/identity/v3/auth/tokens
OPENSTACK_AUTH_URL = os.getenv("OPENSTACK_AUTH_URL", "")
BASH

Список доступных параметров конфигурационного файла приведен в таблице.

Описание параметров конфигурационного файла Оркестратора

ПараметрНазначениеЗначение по умолчанию
Параметры универсального диспетчера Termidesk (секция Termidesk params)
TERMIDESK_HOSTFQDN или IP-адрес универсального диспетчера TermideskНе задано
TERMIDESK_PORT

Номер порта универсального диспетчера Termidesk
(как правило, 80 или 443)

Не задано
TERMIDESK_USERNAMEИмя пользователя с правами администратора в универсальном диспетчере TermideskНе задано
TERMIDESK_PASSWORDПароль пользователя с правами администратора в универсальном диспетчере TermideskНе задано
TERMIDESK_AUTHИдентификатор домена аутентификации (authSmallName, метка) в универсальном диспетчере Termidesk,
в который входит пользователь TERMIDESK_USERNAME
Не задано
TERMIDESK_AUTH_URL

Данный URL используется для проверки состояния (health check) универсального диспетчера Termidesk.

Если страница доступна (получен ответ: HTTP_200_OK), то считается, что универсальный диспетчер Termidesk функционирует правильно

'/api/auth/draft/legacy/login'
Параметры для проверки пароля приложений OpenStack (секция OpenStack params)
APP_CREDENTIALS_NAMEИмя приложения для подключения к OpenStackНе задано
APP_CREDENTIALS_SECRETКлюч-пароль для подключения к OpenStack. Может быть задан или автоматически сгенерирован при создании доступа для приложения. Отображается в интерфейсе OpenStack только один раз, и, в случае утери, требует перегенерацииНе задано
APP_CREDENTIALS_USER_NAMEИмя пользователя, предоставляющего доступ приложению. Уровень пользователя должен быть не ниже «member». Возможные варианты уровня: «member», «admin»,«owner»Не задано
APP_CREDENTIALS_USER_DOMAINИмя (не идентификатор) домена OpenStack, в который входит пользователь APP_CREDENTIALS_USER_NAMEНе задано
OPENSTACK_AUTH_URLURL компонента Identity, располагается в OpenStack по пути «Проект - Доступ к API - Identity»Не задано

Проверка заданных настроек

Для проверки корректности заданных настроек применяется исполняемый файл /opt/termidesk/share/termidesk-orchestrator/src/self_check.py.

Для его использования необходимо выполнить команды:

:~$ cd /opt/termidesk/share/termidesk-orchestrator/src/
:~$ python3 self_check.py
BASH

Если во время проверки возникает ошибка, подробную информацию о ней можно найти в файле /tmp/termidesk_self_check_crash.log. Файл журнала перезаписывается при каждом запуске проверок.

Запуск служб

Запуск служб осуществляется после задания настроек и проверки их корректности.

Добавить в автоматический запуск службу Оркестратора:

:~$ sudo systemctl enable termidesk-orchestrator.service
BASH

Затем запустить службу:

:~$ sudo systemctl start termidesk-orchestrator.service
BASH

Проверка работоспособности

Для проверки работоспособности необходимо:

  • получить самоподписанный сертификат для обращения по протоколу HTTPS (опционально);
  • получить токен приложения (обязательно).

Для получения самоподписанного сертификата, используемого для обращений по протоколу HTTPS, необходимо воспользоваться командой:

:~$ echo quit | openssl s_client -showcerts -servername orchestrator.test.lan -connect orchestrator.test.lan:443 > /home/user/orchestrator.test.lan.pem
BASH

где:

orchestrator.test.lan - имя узла, на котором установлен Оркестратор;

/home/user/orchestrator.test.lan.pem - путь к pem файлу, в который будет сохранен сертификат.

Токен приложения используется для авторизации запросов пользователя и запрашивается на сервере OpenStack через функционал API.

Для выполнения API-запросов следует установить утилиту curl:

:~$ sudo apt install curl
BASH

Для запроса токена необходимо использовать следующую команду:

:~$ curl -i \
  -H "Content-Type: application/json" \
  -d '
{ "auth": {
    "identity": {
      "methods": ["application_credential"],
      "application_credential": {
        "name": "orchestrator",
        "secret": "orchestrator_secret_key",
        "user": {
          "name": "admin",
          "domain": { "name": "Default" }
        }
      }
    }
  }
}' "http://IP-address/identity/v3/auth/tokens" | grep "X-Subject-Token" | sed -e 's/\r//' -e 's/\n//' 
BASH

где:

IP-address - IP-адрес сервера OpenStack.

Вывод команды будет содержать необходимый токен:

X-Subject-Token: gAAAAABjdlObymw<...cuted out...>-pJ2JcKNDI_s_FleOLuZOuyt-r
BASH

Полученный токен необходимо разместить в переменную окружения APP_TOKEN и подставлять в заголовок «X-ORC-TOKEN-APP» при каждом запросе к Оркестратору.

Для задания переменной окружения следует воспользоваться командой:

:~$ export APP_TOKEN="gAAAAABjdlObymw<...cuted out...>-pJ2JcKNDI_s_FleOLuZOuyt-r"
BASH

Проверка состояния Оркестратора (health check) выполняется запросом через утилиту curl:

:~$ curl -s -H "X-ORC-TOKEN-APP: $APP_TOKEN" --cacert orchestrator.test.lan.pem https://orchestrator.test.lan/api/draft/orc/health/ | python -m json.tool
BASH

где:

orchestrator.test.lan.pem - ранее сохраненный самоподписанный сертификат;

orchestrator.test.lan - имя узла, на котором установлен Оркестратор.

Проверка состояния универсального диспетчера Termidesk через Оркестратор выполняется запросом через утилиту curl:

:~$ curl -s -H "X-ORC-TOKEN-APP: $APP_TOKEN" --cacert orchestrator.test.lan.pem https://orchestrator.test.lan/api/draft/health/ | python -m json.tool
BASH

При правильном функционировании запрашиваемого компонента ответ должен содержать:

{
    "data": "ok"
}
BASH