Рекомендации по установке пакетов, необходимых для работы Платформы Tantor на серверах (виртуальных машинах)
В этом разделе представлена инструкция по автоматизации установки пакетов, необходимых для установки компонентов Платформы на виртуальные машины.
Данный архив служит для первичной подготовки серверов (виртуальных машин) к разворачиванию Платформы Tantor.
Далее по тексту будут представлены примеры вводимых в терминале команд, нужных для подготовки SSH сессии, проверки корректности настроек ansible и запуска playbook. В качестве пользователя в них будет использоваться учётная запись admin_user. При запуске команд в контуре Заказчика данный пользователь должен быть изменён на учётную запись, имеющую доступ по SSH ко всем серверам (виртуальным машинам) указанным в inventory, а также доступ в привилегированный режим (root).
Подготовка к запуску Ansible playbook
Порядок подготовки к запуску Ansible playbook:
Убедитесь, что на каждом сервере (виртуальной машине) группы стоит операционная система Astra linux 1.7.4 или установите её.
Распакуйте предоставленный ООО «ТАНТОР ЛАБС» архив в любой каталог файловой системы (рекомендуемое место размещения /opt/tantor/) на сервере (виртуальной машине) Admin server (ссылка на скачивание).В данном архиве представлены сторонние библиотеки и пакеты. Компания «ТАНТОР ЛАБС» не несет ответственности за установку сторонних пакетов и библиотек.
Перейдите в созданную директорию и заполните файл inventory (располагается в каталоге ansible_package_preinstallation/inventory распакованного архива). Укажите в нём все сервера (виртуальные машины), на которые необходимо устанавливать компоненты Платформы Tantor.
При заполнении файла inventory придерживайтесь имеющейся структуры:
общий список групп серверов (виртуальных машин) Платформы;
именованные группы серверов (виртуальных машин), необходимые для установки конкретного модуля Платформы;
Настройте возможность подключения по 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:
Operdb - храненение данных Платформы.
Operdb replication - репликация базы данных Платформы.
Tensordb - база данных для анализа информации.
Tensordb replication - репликация базы данных для анализа.
Flyway migrations -сервис миграции во внутренние базы данных Платформы.
Pgbouncer - управление пулом соединений внутренних баз данных Платформы.
Nats cluster - брокер сообщений для компонентов системы.
Nats nginx proxy - балансировщик соединений к NATS.
Backend (включая keeper, pgconfigurator) - сервер API Платформы, keeper - передает данные от агентов в во внутренние базы данных Платформы, pgconfigurator - сервис автоматизированного конфигурирования PostgreSQL.
Pgexplain - сервис анализа запросов.
Frontend - пользовательский интерфейст платформы.
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 распакованного архива. Подключение логирования в систему сбора логов, установленную в контуре Заказчика, осуществляются самим Заказчиком.