Программный комплекс Tantor XData. Инструкция по установке

Данное руководство администратора описывает процесс развертывания программного комплекса Tantor XData в среде виртуализации.




Предварительные условия

Для установки программного комплекса Tantor XData в среде виртуализации требуется несколько виртуальных машин. Состав виртуальных машин приведен в таблице 1.

Таблица 1. Состав виртуальных машин для установки ПК Tantor XData
В случае установки Программного комплекса Tantor XData на ресурсах компании ООО "ИксДата" предварительно требуется подключиться к VPN-серверу средствами VPN-клиента OpenVPN Connect используя файл конфигурации user_arxm_dmx.ovpn VPN-клиента OpenVPN Connect.



Предварительные действия

Развёртывание ПК Tantor XData возможно с рабочей станции администратора, с установленной операционной системой семейства Linux и следующим набором инструментов/программных пакетов:
  • git
  • текстовый редактор (далее в тексте в качестве текстового редактора используется nano)
  • Ansible
  • python3
  • python3-pip
  • python3-venv

Установка Git

Программный пакет Git необходим для клонирования репозитория ARXM. Для установки Git выполните команды:
sudo apt update
apt install git
Чтобы убедиться, что Git установлен корректно, выполните команду:
git --version
Если установка прошла успешно, вы увидите версию установленного Git, например:
git version 2.43.0


Установка текстового редактора

Текстовый редактор требуется для редактирования конфигурационных файлов. Для установки текстового редактора выполните команду:
sudo apt install nano
Чтобы убедиться, что текстовый редактор установлен корректно, выполните команду:
nano
Если редактор запускается и открывается пустой экран в терминале, установка прошла успешно. Для выхода из редактора используйте сочетание клавиш Ctrl + X


Установка зависимостей

Для обновления списка пакетов выполните команду:
apt update
Установите Python 3, выполнив команду:
apt install python3
Убедитесь, что установка прошла без ошибок. Установите pip и модуль python3-apt, выполнив команду:
apt install python3-pip python3-apt
apt install python3-venv
Убедитесь, что установка прошла без ошибок. Для проверки того, что установка прошла корректно, выполните команды:
python3 --version
pip3 --version
Убедитесь, что отображаются версии установленных пакетов.


Установка Ansible

Ansible — это инструмент автоматизации, который применяет сценарии (плейбуки) для настройки серверов и развертывания ПО. Установите Ansible, выполнив команды:
apt install software-properties-common
pip3 install ansible --break-system-packages
Убедитесь, что установка прошла без ошибок. Для проверки того, что установка прошла корректно, выполните команды:
ansible --version
Убедитесь, что отображаются версии установленных пакетов:
ansible [core 2.18.2]
 ...

Добавление DNS-записи ПО Платформа "Тантор"

Для трансляции IP-адреса web-интерфейса ПО Платформа "Тантор" в доменное имя выполнить команду
sudo nano /etc/hosts
Добавить строку, выйти из текстового редактора и сохранить файл.
<IP-ADDRESS> xdata.xdata.local
Где <IP-ADDRESS> - IP-адрес Платформы "Тантор" (см. таблицу 1).




Подготовка конфигурационного файла


Клонирование репозитория ARXM

Клонировать репозиторий ARXM, выполнив команду:
git clone https://gitlab+deploy-token-1:<TOKEN>@gitlab.tantorlabs.ru/xdata/arxm.git
Убедитесь, что клонирование репозитория ARXM прошло без ошибок.


Создание виртуального окружения

Виртуальное окружение — это изолированная среда, где можно устанавливать зависимости проекта без влияния на систему. Для создания и активирования виртуального окружения выполните команды:
cd arxm
python3 -m venv venv
source venv/bin/activate
Убедиться, что:
  • команда python3 -m venv venv завершилась без ошибок;
  • после выполнения команды source venv/bin/activate командная строка изменилась и выглядит следующим образом:
(venv) user@hostname:~/arxm$
Выполнить команду which python3 и убедиться, что интерпретатор python активирован внутри виртуального окружения venv и вывод команды имеет следующий вид:
/home/user/arxm/venv/bin/python


Установка зависимостей проекта ARXM

Установите зависимости, выполнив команды:
pip install -r requirements.txt
ansible-galaxy install -r requirements.yml
Убедитесь, что команды pip install -r requirements.txt и ansible-galaxy install -r requirements.yml выполнились без ошибок.
Заполнение конфигурационных файлов

Перед запуском процесса разворачивания ПК Tantor XData требуется заполнить два файла конфигурационных файла:
  1. inventory.yml — конфигурационный файл, содержащий список всех хостов/компонентов и их IP-адреса;
  2. vars.yml — конфигурационный файл, содержащий переменные проекта.

Заполнение конфигурационного файла inventory.yml

Перейдите в папку environments/default/, выполнив команду:
cd environments/default/
Откройте в текстовом файле конфигурационный файл, выполнив команду:
nano inventory.yml
Отредактируйте конфигурационный файл, заменив IP-адреса в соответствии с Таблицей 1
---
all:
 children:
   mgt:
    hosts:
     md:
       ansible_host: 192.168.11.159
       ansible_python_interpreter: /usr/bin/python3.11
       ansible_ssh_user: user
 db:
  hosts:
   db01:
       ansible_host: 192.168.11.153
       ansible_python_interpreter: /usr/bin/python3.11
       ansible_ssh_u
   db02:
        ansible_host: 192.168.11.154
        ansible_python_interpreter: /usr/bin/python3.11
        ansible_ssh_user: user
   db03:
        ansible_host: 192.168.11.155
        ansible_python_interpreter: /usr/bin/python3.11
        ansible_ssh_user: user
 registry_srv:
     hosts:
      registry01:
       ansible_host: 192.168.11.160
       ansible_python_interpreter: /usr/bin/python3.11
       ansible_ssh_user: user

 etcd:
   hosts:
      etcd01:
       ansible_host: 192.168.11.156
       ansible_python_interpreter: /usr/bin/python3.11
       ansible_ssh_user: user
       etcd_node_name: etcd1
     etcd02:
       ansible_host: 192.168.11.157
       ansible_python_interpreter: /usr/bin/python3.11
       ansible_ssh_user: user
       etcd_node_name: etcd2
    etcd03:
       ansible_host: 192.168.11.158
       ansible_python_interpreter: /usr/bin/python3.11
       ansible_ssh_user: user
       etcd_node_name: etcd3

 s3:
  hosts:
    s3-01:
       ansible_host: 192.168.11.162
       ansible_python_interpreter: /usr/bin/python3.11
       ansible_ssh_user: user

tam:
 hosts:
  tam01:
       ansible_host: 192.168.11.165
       ansible_python_interpreter: /usr/bin/python3.11
       ansible_ssh_user: user

tantor_platform:
 hosts:
   tantor-platform:
      ansible_host: 192.168.11.164
      ansible_python_interpreter: /usr/bin/python3.11
ansible_ssh_user: user

cli:
 hosts:
  cli01:
      ansible_host: 192.168.11.152
      ansible_python_interpreter: /usr/bin/python3.11
      ansible_ssh_user: user

vault:
 hosts:
  vault01:
      ansible_host: 192.168.11.166
      ansible_python_interpreter: /usr/bin/python3.11
      ansible_ssh_user: user

bckserver:
 hosts:
  bckserver01:
      ansible_host: 192.168.11.151
      ansible_python_interpreter: /usr/bin/python3.11
      ansible_ssh_user: user

ntp_reserve:
 hosts:
  ntp_reserve01: # ------------------------------------------ stor-01
      ansible_host: 192.168.11.163
      ansible_python_interpreter: /usr/bin/python3.11
      ansible_ssh_user: user
  # ntp_reserve02: # ------------------------------------------ stor-02 (if
 exists)
  # ansible_host:
  # ansible_python_interpreter: /usr/bin/python3.11
  # ansible_ssh_user: user

ntp_server:
 hosts:
  ntp_server01: # -----------------------------------------------------------
mgt-01
      ansible_host: 192.168.11.159
      ansible_python_interpreter: /usr/bin/python3.11
      ansible_ssh_user: user

bckagent:
 hosts:
  bckagent01: # ------------------------------------------------------ db-01
      ansible_host: 192.168.11.153
      ansible_python_interpreter: /usr/bin/python3.11
      ansible_ssh_user: user
  bckagent02: # ------------------------------------------------------ db-02
      ansible_host: 192.168.11.154
      ansible_python_interpreter: /usr/bin/python3.11
      ansible_ssh_user: user
 bckagent03: # ------------------------------------------------------ db-03
      ansible_host: 192.168.11.155
      ansible_python_interpreter: /usr/bin/python3.11
      ansible_ssh_user: user

ntp_client:
 hosts:
  ntp_client01: # ------------------------------------------------------ db-01
      ansible_host: 192.168.11.153
      ansible_python_interpreter: /usr/bin/python3.11
      ansible_ssh_user: user
  ntp_client02: # ------------------------------------------------------ db-02
      ansible_host: 192.168.11.154
      ansible_python_interpreter: /usr/bin/python3.11
      ansible_ssh_user: user
  ntp_client03: # ------------------------------------------------------ db-03
      ansible_host: 192.168.11.155
      ansible_python_interpreter: /usr/bin/python3.11
      ansible_ssh_user: user
Сохраните конфигурационный файл, не изменяя его названия. Для этого нажмите сочетания клавиш Ctrl + X и в открывшемся диалоге выберите соответствующий пункт.


Заполнение конфигурационного файла vars .yml

Перейдите в папку /home/user/arxm, выполнив команду:
cd /home/user/arxm
Откройте в текстовом файле конфигурационный файл, выполнив команду:
nano vars.yml
Отредактируйте конфигурационный файл, заменив следующие строки.
### common VM setups
interconnect_ip_pool: "192.168.6.0/24"

# reverse routes
reverse_routes_gateway: "192.168.6.254/24"
reverse_routes_network: "192.168.7.0/24"
Проверка заполнения конфигурационных файлов

Для проверки корректности заполнения конфигурационного файла inventory.yml выполнить команду:
cd environments/default/
ansible-inventory --list -i inventory.yml
Убедиться, что ошибки отсутствуют. Для проверки полноты заполнения конфигурационного файла inventory.yml выполнить команду:
ansible -i inventory.yml all --list-hosts
Убедиться, что в выводе команды указаны все хосты/компоненты в соответствии с таблицей 1.
Важно!
  • Автоматической проверки корректности указания IP-адресов не предусмотрено.
Запуск плейбуков Ansible

Повторные запуски плейбука не приводят к дублированию уже выполненных действий благодаря идемпотентности.

Каждая роль описывает необходимый набор переменных и узлов — их можно найти в example.yml для соответствующей роли.

Перед запуском убедитесь, что вы запросили у DevOps-инженера логин и пароль от Nexus-репозитория. Они потребуются при выполнении ряда плейбуков (например, bckserver.yml , registry.yml , atam.yml и др.).
Важно!
  • Запуск плейбуков должен осуществляться строго в порядке, приведенном ниже.
  • Не допускается параллельный запуск нескольких плейбуков одновременно. Дождитесь завершения одного плейбука, прежде чем запускать следующий, чтобы избежать конфликтов.
Возможные ошибки
  1. Если в конце выполнения плейбука вывод содержит failed=1 или unreachable=1 , это означает, что произошла ошибка. Необходимо выполнить следующие шаги: Ознакомьтесь с логом выполнения. Подробности об ошибке обычно отображаются внизу вывода после строки PLAY RECAP .
  2. Проверьте inventory-файл. Убедитесь, что IP-адреса ( ansible_host ) и пользователи ( ansible_ssh_user ) указаны верно.
  3. Повторите запуск плейбука. После устранения проблемы снова выполните ту же команду.
Возможные ошибки
  1. Запуск плейбуков должен осуществляться из каталога /arxm
Запуск роли bootstrap

Роль bootstrap обеспечивает базовую подготовку серверов для установки ПК Tantor XData. Для запуска роли выполните команду:
ansible-playbook examples/bootstrap.yml
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли ntp

Роль ntp обеспечивает установку и настройку сервиса NTP на серверах. Для запуска роли выполните команду:
ansible-playbook examples/ntp.yml
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли registry

Роль registry обеспечивает установку сервиса Docker Registry. Для запуска роли выполните команду:
ansible-playbook examples/registry.yml
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли etcd

Роль etcd обеспечивает установку кластера etcd на указанных нодах. Для запуска роли выполните команду:
ansible-playbook examples/etcd.yml
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли vault

Роль vault обеспечивает установку сервиса хранения секретов Vault. Для запуска роли выполните команду:
ansible-playbook examples/vault.yml -e '{"ci": true, "docker_username":
"<DOCKER_USERNAME>", "docker_auth_required": true, "docker_password":
"<DOCKER_PASSWORD>"}'
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли tam

Роль tam обеспечивает установку сервера TAM. Для запуска роли выполните команду:
ansible-playbook examples/tam.yml -e '{"ci": true, "docker_username": "<USERNAME>",
"docker_auth_required": true, "docker_password": "<PASSWORD>"}'
Где:
  • <docker_username> — имя пользователя репозитория (предоставляется инженером XData);
  • <docker_password> — пароль пользователя репозитория (предоставляется инженером XData).
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли bckserver

Роль bckserver обеспечивает установку сервера Backman. Для запуска роли выполните команду:
ansible-playbook examples/bckserver.yml -e '{"ci": true, "docker_username":
"<USERNAME>", "docker_auth_required": true, "docker_password": "<PASSWORD>"}'
Где:
  • <docker_username> — имя пользователя репозитория (предоставляется инженером XData);
  • <docker_password> — пароль пользователя репозитория (предоставляется инженером XData).
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли tantor_platform

Роль tantor_platform обеспечивает установку Платформы "Тантор". Для запуска роли выполните команду:
ansible-playbook -i environments/default/inventory.yml examples/tantor_platform.yml
-e '{"ci": true, "docker_username": "<USERNAME>", "docker_auth_required": true,
"docker_password": "<PASSWORD>"}'
Где:
  • <docker_username> — имя пользователя репозитория (предоставляется инженером XData);
  • <docker_password> — пароль пользователя репозитория (предоставляется инженером XData).
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли atam

Роль atam обеспечивает установку агентов TAM. Для запуска роли выполните команду:
ansible-playbook examples/atam.yml -e '{"ci": true, "docker_username": "<USERNAME>",
"docker_auth_required": true, "docker_password": "<PASSWORD>"}'
Где:
  • <docker_username> — имя пользователя репозитория (предоставляется инженером XData);
  • <docker_password> — пароль пользователя репозитория (предоставляется инженером XData).
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли alt_python

Роль alt_python является сервисной и обеспечивает установку требуемой версии python. Для запуска роли выполните команду:
ansible-playbook examples/alt_python.yml -e '{"ci": true, "docker_username":
"<USERNAME>", "docker_auth_required": true, "docker_password": "<PASSWORD>"}'
Где:
  • <docker_username> — имя пользователя репозитория (предоставляется инженером XData);
  • <docker_password> — пароль пользователя репозитория (предоставляется инженером XData).
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли bckagent

Роль bckagent обеспечивает установку агентов Backman. Для запуска роли выполните команду:
ansible-playbook examples/bckagent.yml -e '{"ci": true, "docker_username":
"<USERNAME>", "docker_auth_required": true, "docker_password": "<PASSWORD>"}'
Где:
  • <docker_username> — имя пользователя репозитория (предоставляется инженером XData);
  • <docker_password> — пароль пользователя репозитория (предоставляется инженером XData).
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли cli

Роль cli обеспечивает установку инструментов командной строки tam-cli и backman-cli. Для запуска роли выполните команду:
ansible-playbook examples/cli.yml -e '{"ci": true, "docker_username": "<USERNAME>",
"docker_auth_required": true, "docker_password": "<PASSWORD>"}'
Где:
  • <docker_username> — имя пользователя репозитория (предоставляется инженером XData);
  • <docker_password> — пароль пользователя репозитория (предоставляется инженером XData).
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли s3

Роль s3 обеспечивает установку сервиса S3 на сервере хранения. Для запуска роли выполните команду:
ansible-playbook examples/s3.yml
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Запуск роли reverse_routes

Роль reverse_routes является сервисной и обеспечивает сетевую маршрутизацию внутри программного комплекса. Для запуска роли выполните команду:
ansible-playbook examples/reverse_routes.yml
Убедитесь, что выполнение плейбука прошло без ошибок. В журнале выполнения плейбука параметры unreachable, failed равны "0":
PLAY RECAP *********************************************************************
                                                  : ok=12 changed=6 unreachable=0 failed=0
Верификация корректности установки ПК Tantor XData

Данный этап включает в себя проверку доступа к интерфейсам управления ПК Tantor XData:
  • tam-cli — интерфейс командной строки TAM
  • backman-cli —интерфейс командной строки Backman
  • Temporal — инструмент для отслеживания состояния выполнения задач
  • Платформа Tantor — набор инструментов для работы с СУБД в графическом интерфейсе
Подключение к виртуальной машине с CLI-инструментами

Подключиться к виртуальной машине cli-01 по протоколу SSH, выполнив команду:
ssh user@<IP-ADDRESS>
Где:

  • <IP-ADDRESS > —IP-адрес виртуальной машины cli-01 (см. таблицу 1)
Проверка доступности tam-cli

В консоли виртуальной машины cli-01 выполнить команду:
tam-cli --version
В случае успешного выполнения команды отобразится сообщение следующего вида:
tam-cli:
  version: 2.5.0
  build_hash: 1b4db629
  build_time: 2025-03-31T14:21:13+00:00
Регистрация сервиса Backman на сервере TAM

В консоли виртуальной машины cli-01 выполнить команду:
backman-cli --version
В случае успешного выполнения команды отобразится сообщение следующего вида:
backman_cli:
    version: 2.5
backman:
    version: 2.5
Проверка доступа к интерфейсу сервиса Temporal

Для проверки доступа к сервису Temporal выполните следующие действия:
1. Откройте веб-браузер и перейдите по адресу: http://<TAM-SERVER-IP-ADDRESS>:8080/namespaces/
default/workflows
где <TAM-SERVER-IP-ADDRESS> - IP-адрес сервера TAM (см. таблицу 1)
2. Убедитесь, что:
  • страница загружается без ошибок;
  • отображаются workflow-записи, связанные с действиями TAM или Backman (например,
  • регистрация агентов, создание кластера);
  • У хотя бы одного workflow статус — Completed.
Проверка доступа к интерфейсу Платформы "Тантор"

Для проверки доступа к Платформе "Тантор" выполните следующие действия:
1. Откройте веб-интерфейс Платформы "Тантор" по адресу: https://xdata.xdata.local/
2. Введите логин и пароль
3. Убедитесь, что:
  • авторизация прошла успешно, ошибки авторизации отсутствуют
  • доступен интерфейс системы