Рекомендации по установке пакетов, необходимых для работы Платформы Tantor на серверах (виртуальных машинах)

В этом разделе представлена инструкция по автоматизации установки пакетов, необходимых для установки компонентов Платформы на виртуальные машины.

Данный архив служит для первичной подготовки серверов (виртуальных машин) к разворачиванию Платформы Tantor.

Далее по тексту будут представлены примеры вводимых в терминале команд, нужных для подготовки SSH сессии, проверки корректности настроек ansible и запуска playbook. В качестве пользователя в них будет использоваться учётная запись admin_user. При запуске команд в контуре Заказчика данный пользователь должен быть изменён на учётную запись, имеющую доступ по SSH ко всем серверам (виртуальным машинам) указанным в inventory, а также доступ в привилегированный режим (root).

Подготовка к запуску Ansible playbook

Порядок подготовки к запуску Ansible playbook:

  1. Убедитесь, что на каждом сервере (виртуальной машине) группы стоит операционная система Astra linux 1.7.4 или установите её.

  2. Распакуйте предоставленный ООО «ТАНТОР ЛАБС» архив в любой каталог файловой системы (рекомендуемое место размещения /opt/tantor/) на сервере (виртуальной машине) Admin server (ссылка на скачивание).В данном архиве представлены сторонние библиотеки и пакеты. Компания «ТАНТОР ЛАБС» не несет ответственности за установку сторонних пакетов и библиотек.

  3. Перейдите в созданную директорию и заполните файл inventory (располагается в каталоге ansible_package_preinstallation/inventory распакованного архива). Укажите в нём все сервера (виртуальные машины), на которые необходимо устанавливать компоненты Платформы Tantor.

    При заполнении файла inventory придерживайтесь имеющейся структуры:

    • общий список групп серверов (виртуальных машин) Платформы;

    • именованные группы серверов (виртуальных машин), необходимые для установки конкретного модуля Платформы;

  4. Настройте возможность подключения по SSH-ключу пользователю admin_user:

ssh-agent bash
ssh-add ~/.ssh/<admin_user_private_key>

Обязательным требованием к установке является связность серверов (виртуальных машин) посредством DNS.

Процесс работы ansible playbook

Ansible осуществляет подключение по SSH к серверам, указанным в файле inventory, для выполнения задач, описанных в файле software_installation.yml. Подключение устанавливается от имени пользователя, заданного при помощи флага «-u» (в примерах ниже «-u admin_user»). В процессе работы ansible происходит установка пакетов. Часть из них устанавливается из подключённых к системе репозиториев, часть - путём копирования установочных файлов из каталога, содержащего распакованный архив, с последующей локальной установкой. Файлы, скопированные из каталога, содержащего распакованный архив, размещаются в директории /tmp/<package_group> сервера (виртуальной машины), на котором происходит установка (например, /tmp/nats для установки nats-server-a).

В результате работы ansible на серверах (виртуальных машинах) будут установлены следующие компоненты Платфрмы Tantor:

  1. Operdb - храненение данных Платформы.

  2. Operdb replication - репликация базы данных Платформы.

  3. Tensordb - база данных для анализа информации.

  4. Tensordb replication - репликация базы данных для анализа.

  5. Flyway migrations -сервис миграции во внутренние базы данных Платформы.

  6. Pgbouncer - управление пулом соединений внутренних баз данных Платформы.

  7. Nats cluster - брокер сообщений для компонентов системы.

  8. Nats nginx proxy - балансировщик соединений к NATS.

  9. Backend (включая keeper, pgconfigurator) - сервер API Платформы, keeper - передает данные от агентов в во внутренние базы данных Платформы, pgconfigurator - сервис автоматизированного конфигурирования PostgreSQL.

  10. Pgexplain - сервис анализа запросов.

  11. Frontend - пользовательский интерфейст платформы.

  12. Reverse Proxy - балансировщик соединений пользователей к Платформе.

На сервере Admin server (с которого будет происходить установка Платформы Tantor) необходимо установить версию Python не ниже 3.9, после чего установить ansible версии не ниже 8.0.0. В случае отсутствия в подключённых к системе репозиториях пакетов требуемых версий можно использовать листинг кода ниже для компиляции и установки Python3.9.1 из исходного кода с последующим обновлением pip и установкой ansible версии 8.0.0 (запускать команды необходимо в привилегированном режиме (root)):

# Синхронизируем список пакетов в системе
apt update

# Устанавливаем пакеты для компиляции Python
apt install build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev curl libbz2-dev wget

# Скачиваем архив с исходными кодами Python-3.9.1
wget https://www.python.org/ftp/python/3.9.1/Python-3.9.1.tgz

#Разархивируем архив с исходными кодами
tar -xf Python-3.9.1.tgz

# Переходим в директорию с исходными кодами и запускаем подготовку к компиляции
cd Python-3.9.1
./configure --enable-optimizations

# компилируем Python-3.9.1 в два потока
make -j 2

# Устанавливаем скомпилированный Python-3.9.1 не удаляя уже установленный Python
make altinstall
# На данном этапе установка Python3.9.1 завершена

# Обновляем PIP
/usr/local/bin/python3.9 -m pip install --upgrade pip

# Устанавливаем ansible 8.0.0
pip3.9 install ansible==8.0.0

Запуск ansible playbook

Запускать команды ниже рекомендуется из каталога ansible_package_preinstallation распакованного архива. В случае запуска из иного каталога после флага «-i» укажите полный путь к inventory файлу.

Проверьте доступность серверов (виртуальных машин) из файла inventory при помощи команды:

ansible platform -i inventory -m ping -u admin_user

Результатом выполнения команды выше будет ответ от каждого из доступных серверов в следующем формате:

<server_dns_name> | SUCCESS => {небходимо     "ansible_facts": {
    "discovered_interpreter_python": "/usr/bin/<host_python_version>"
},
"changed": false,
"ping": "pong"
}

Данный вывод для каждого сервера (виртуальной машины), описанного в файле inventory, означает успешное подключение к нему по SSH. Если в результате ответа от какого-либо сервера (виртуальной машины) сообщение отличалось от шаблона выше - проверьте возможность подключения к нему через ключ от имени пользователя, передаваемого при помощи флага «-u». При необходимости подключаться только с вводом пароля (без использования ключей) нужно добавлять флаги «-kK» к запуску команд и вводить пароль для SSH-подключения и для перехода пользователя в привилегированный режим (root):

ansible platform -i inventory -m ping -u admin_user -kK

При успешном выполнении проверки, описанной выше, можно приступать к запуску ansible playbook:

ansible-playbook -i inventory -u admin_user ansible_package_preinstallation/software_installation.yml

Если необходимо установить пакеты только на определённую группу серверов (виртуальных машин), можно использовать флаг «-l» для ограничения диапазона установки. Например:

ansible-playbook -i inventory -u admin_user -l reverse_proxy ansible_package_preinstallation/software_installation.yml

В примере выше установка идёт только на сервер «reverse_proxy», полученную из inventory файла.

С другими возможностями запуска ansible playbook можно ознакомиться в официальной документации ansible.

При отсутствии какого-либо установленного пакета правильная работа Платформы не гарантируется.

Успешным выполнением запуска ansible playbook является отсутствие ошибок в потоке вывода в терминале.

Логирование действий в процессе установки Платформы

Все данные, полученные в процессе запуска ansible playbook, сохраняются в файле ansible.log, располагающемся в каталоге ansible_package_preinstallation распакованного архива. Изменение пути к лог файлу доступно путём редактирования соответствующего поля в файле конфигураций ansible «ansible.cfg». Данный файл находится в каталоге ansible_package_preinstallation распакованного архива. Подключение логирования в систему сбора логов, установленную в контуре Заказчика, осуществляются самим Заказчиком.