Автоматизированная установка компонента DBBR
Компонент DBBR включает следующие модули:
Модуль | Описание |
|---|---|
Выступает в роли граничного прокси-сервера и предоставляет единую точку входа для остальных сервисов продукта. Включает конфигурацию и набор фильтров Envoy (или Nginx, или Platform V SynGX), которые в совокупности определяют его функциональность | |
Управляет агентскими приложениями резервного копирования и их токенами доступа к инфраструктуре | |
Отвечает за регистрацию и перерегистрацию хранилищ, их удаление, а также управление токенами доступа к инфраструктуре и метаданными резервных копий, хранящихся в этих хранилищах | |
Предоставляет сервис управления задачами резервного копирования, их планирования и мониторинга | |
Предоставляет интерфейс командной строки для взаимодействия пользователя с системой |
Настоящая инструкция предназначена для автоматизированной установки компонента целиком. Если требуется установить только определенный модуль – воспользуйтесь инструкцией на этот модуль (перейдите по ссылке в таблице выше).
Предусловия
Перед началом установки убедитесь, что выполнены следующие условия:
- Подготовлено окружение.
- Дистрибутив CopyWala распакован в соответствии с инструкцией, приведенной в разделе Установка, шаг Распаковка дистрибутива CopyWala.
Последовательность действий
Выполните шаги в следующем порядке:
- Подготовка среды Ansible.
- Установка Ansible-коллекций.
- Генерация TLS-сертификатов.
- Подготовка inventory-файла и переменных ролей.
- Запуск установки.
Подготовка среды Ansible
Рекомендуется запускать установку модулей компонента DBBR в виртуальной среде Python.
Данный шаг выполняется на управляющем узле Ansible (control node) — машине, с которой запускаются Ansible-плейбуки.
Создание виртуальной среды позволяет избежать конфликтов с уже предустановленными пакетами и не затрагивать существующую среду на текущей машине. Для подготовки виртуального окружения выполните следующие шаги:
-
Создайте виртуальное окружение. Рекомендуется использовать Python 3.9:
python3 -m venv .pbr -
Активируйте виртуальное окружение:
source .pbr/bin/activate -
Установите необходимые пакеты:
python3.9 -m pip install 'ansible==8.7.0' -
Проверьте, что установка Ansible прошла успешно:
ansible --version. В результате вывод не должен содержать ошибок. Командаpip listдолжна вывести зависимости:ansible 8.7.0ansible-core 2.15.13
После завершения установки компонентов виртуальную среду можно отключить. Выполните консольную команду: deactivate.
Установка Ansible-коллекций
Данный шаг выполняется на управляющем узле Ansible (control node) — машине, с которой запускаются Ansible-плейбуки.
Установите или обновите Ansible-коллекции с помощью ansible-galaxy. Необходимые зависимости:
Название Ansible-коллекции | Версия | Установка |
|---|---|---|
| 1.0.0 | Перейдите в директорию с распакованным дистрибутивом любого компонента CopyWala и запустите команду: |
| 3.9.1 | |
| 1.0.2 | |
Генерация TLS-сертификатов
Сгенерируйте TLS-сертификаты, необходимые для работы модулей компонента DBBR с шифрованием.
Для генерации используйте Ansible-роль certs. Работа с ролью описана в дополнительной документации для автоматизированного варианта установки (с помощью Ansible) в разделе Генерация сертификатов с помощью Ansible-роли certs.
Подготовка inventory-файла и переменных ролей
-
Перейдите в директорию со скриптами установки. Например, если дистрибутив был распакован в
/path_to_dir/distrib/:cd /path_to_dir/distrib/pbr/owned/dbbr/package/scripts/Ansible -
Создайте inventory-файл на основе
inventory_example.ymlи укажите IP-адреса узлов для соответствующих модулей:- Секция
dbbr.hosts— хосты для установки модулей: api_gateway, agent_manager, storage_manager и task_manager. - Секция
recovery.hosts— хосты для установки модуля recovery_manager.
Пример inventory-файла:
Пример inventory-файлаdbbr:hosts:dbbr_api:ansible_host: "<dbbr_ip_address>"recovery:hosts:recovery-host:ansible_host: "<recovery_manager_ip_address>"ПодсказкаЕсли модули необходимо установить на несколько хостов, добавьте дополнительные секции в inventory-файл по примеру ниже:
Пример inventory-файлаdbbr:hosts:dbbr_api1:ansible_host: "<dbbr_ip_address_1>"dbbr_api2:ansible_host: "<dbbr_ip_address_2>"# КОД ПРОПУЩЕН: секции с IP-адресами остальных хостовrecovery:hosts:recovery-host1:ansible_host: "<recovery_manager_ip_address_3>"recovery-host2:ansible_host: "<recovery_manager_ip_address_4>"# КОД ПРОПУЩЕН: секции с IP-адресами остальных хостов - Секция
-
Задайте переменные следующих ролей, используемых для установки и настройки модулей компонента DBBR:
- api_gateway
- agent_manager
- storage_manager
- task_manager
- recovery_manager
к сведениюКаждая роль отвечает за установку и настройку соответствующего модуля компонента DBBR. Для установки используются RPM-пакеты, пути к которым задаются в переменных ролей с суффиксом
*_package_path, где*— префикс, соответствующий имени модуля.При выполнении роли RPM-пакет копируется на целевой узел, после чего устанавливается.
Путь к RPM-пакету можно указать вручную или определить автоматически с помощью роли common.
Задайте все обязательные переменные (для которых в столбце «Обязательность заполнения» указано Да). При необходимости задайте значения необязательных переменных.
примечание-
Если переменная не задана явно в плейбуке, для нее используется значение по умолчанию, определенное в файле
defaults/main.ymlроли. -
Из необязательных переменных рекомендуется заполнять секцию
*_tls, где*— это префикс с именем модуля. Например, для Storage Manager секция будет выглядеть так:storage_manager_tls:rootca:local_path: /path/to/certs/certificates/rootCA.crtcert:local_path: /path/to/certs/certificates/storage-manager.crtkey:local_path: /path/to/certs/certificates/storage-manager.key
- api_gateway
Название переменной | Описание | Значение по умолчанию | Обязательность заполнения |
|---|---|---|---|
| Путь к RPM-файлу установщика Syngx |
| Да или использовать роль common. При использовании роли common задавать эту переменную не требуется |
| Адрес, на который направляются запросы для последующей обработки Syngx |
| Нет |
| Директория для конфигурационного файла |
| Нет |
| Порт, на котором Syngx будет принимать входящие запросы |
| Нет |
| Порт, на котором будет доступна служебная информация |
| Нет |
| IP-адрес, на котором доступен Agent Manager |
| Нет |
| Порт, на котором доступен API Agent Manager |
| Нет |
| Порт, на котором доступен WebSocket Agent Manager |
| Нет |
| Использование tls-шифрования для подключения к Agent Manager |
| Нет |
| Использование взаимной аутентификации с помощью сертификатов для подключения к Agent Manager |
| Нет |
| IP-адрес, на котором доступен Storage Manager |
| Нет |
| Порт, на котором доступен Storage Manager |
| Нет |
| Использование tls-шифрования для подключения к Storage Manager |
| Нет |
| Использование взаимной аутентификации с помощью сертификатов для подключения к Storage Manager |
| Нет |
| IP-адрес, на котором доступен Task Manager |
| Нет |
| Порт, на котором доступен Task Manager |
| Нет |
| Использование tls-шифрования для подключения к Task Manager |
| Нет |
| Использование взаимной аутентификации с помощью сертификатов для подключения к Task Manager |
| Нет |
| Путь к сертификату, с помощью которого производится проверка валидности сертификатов у компонентов Copywala при перенаправлении запросов |
| Нет |
| Путь к сертификату, с помощью которого производится проверка валидности сертификатов у клиентских машин при перенаправлении запросов |
| Нет |
| Словарь, указывающий пути к сертификатам Syngx. Содержит следующие ключи:<br /> |
| Нет |
::::
Название переменной | Описание | Значение по умолчанию | Обязательность заполнения |
|---|---|---|---|
| Путь к RPM-файлу установщика компонента Agent Manager. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования |
| Да или использовать роль common. При использовании роли common задавать эту переменную не требуется |
| Словарь, описывающий настройку веб-сервера API Agent Manager. Содержит следующие ключи:<br /> |
| Да |
| Словарь, описывающий настройку WebSocket Agent Manager. Содержит следующие ключи:<br /> |
| Да |
| Словарь, описывающий параметры подключения к OpenID провайдеру. Содержит ключ: |
| Да |
| Словарь, описывающий настройки выпуска токенов доступа для агентских приложений. Если в словаре отсутствуют параметры |
| Да |
| Словарь, описывающий параметры логирования. Содержит следующие ключи:<br /> |
| Да |
| Словарь, описывающий параметры служебной БД. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br /> |
| Да |
| Словарь, описывающий параметры подключения к Task Manager. Содержит следующий ключ:<br /> |
| Да |
| Администратор баз данных для создания служебной базы данных | Не задано | Да |
| Пароль администратора баз данных для создания служебной базы данных | Не задано | Да |
| Пользователь для запуска службы Agent Manager |
| Нет |
| Директория с конфигурационным файлом компонента Agent Manager |
| Нет |
| Имя конфигурационного файла компонента Agent Manager |
| Нет |
| Создание служебной базы данных (далее БД). Параметры БД (название, владелец) необходимо взять из переменной |
| Нет |
| Словарь, описывающий параметры подключения к HashiCorp/SecMan. Содержит следующие ключи:<br /> |
| Нет |
| Словарь, описывающий глобальные параметры TLS. Содержит следующие ключи:<br /> |
| Нет |
Название переменной | Описание | Значение по умолчанию | Обязательность заполнения |
|---|---|---|---|
| Путь к RPM-файлу установщика компонента Task Manager. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования |
| Да или использовать роль common. При использовании роли common задавать эту переменную не требуется |
| Словарь, описывающий параметры служебной БД. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br /> |
| Да |
| Словарь, описывающий настройки выпуска токенов доступа для агентских приложений. Если в словаре отсутствуют параметры |
| Да |
| Словарь, описывающий параметры логирования. Содержит следующие ключи:<br /> |
| Да |
| Словарь, описывающий настройку веб-сервера API Task Manager. Содержит ключ: |
| Да |
| Словарь, описывающий настройку Agent Manager. Содержит ключ: |
| Да |
| Словарь, описывающий параметры подключения к OpenID провайдеру. Содержит ключ: |
| Да |
| Администратор баз данных для создания служебной базы данных | Не задано | Да |
| Пароль администратора баз данных для создания служебной базы данных | Не задано | Да |
| Пользователь для запуска службы Task Manager |
| Нет |
| Директория с конфигурационным файлом компонента Task Manager |
| Нет |
| Имя конфигурационного файла компонента Task Manager |
| Нет |
| Словарь, описывающий параметры TLS для Task Manager. Содержит следующие ключи:<br /> |
| Нет |
| Создание служебной базы данных (далее БД) |
| Нет |
| Словарь, описывающий параметры подключения к HashiCorp/SecMan. Содержит следующие ключи:<br /> |
| Нет |
Название переменной | Описание | Значение по умолчанию | Обязательность заполнения |
|---|---|---|---|
| Путь к RPM-файлу установщика компонента storage-manager. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования |
| Да или использовать роль common. При использовании роли common задавать эту переменную не требуется |
| Словарь, описывающий параметры служебной БД. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br /> |
| Да |
| Словарь, описывающий настройки выпуска токенов доступа для агентских приложений. Если в словаре отсутствуют параметры |
| Да |
| Словарь, описывающий параметры подключения к OpenID провайдеру. Содержит ключ: |
| Да |
| Словарь, описывающий глобальные параметры TLS. Содержит следующие ключи:<br /> |
| Да |
| Словарь, описывающий параметры логирования. Содержит следующие ключи:<br /> |
| Да |
| Словарь, описывающий настройку веб-сервера API storage-manager. Содержит следующие ключи:<br /> |
| Да |
| Администратор баз данных для создания служебной базы данных | Не задано | Да |
| Пароль администратора баз данных для создания служебной базы данных | Не задано | Да |
| Словарь, описывающий параметры подключения к HashiCorp/SecMan. Содержит следующие ключи:<br /> |
| Нет |
| Пользователь для запуска службы storage-manager |
| Нет |
| Директория с конфигурационным файлом компонента storage-manager |
| Нет |
| Имя конфигурационного файла компонента storage-manager |
| Нет |
| Создание служебной базы данных (далее БД) |
| Нет |
Название переменной | Описание | Значение по умолчанию | Обязательность заполнения |
|---|---|---|---|
| Путь к RPM-файлу установщика Recovery Manager |
| Да или использовать роль common. При использовании роли common задавать эту переменную не требуется |
| Пользователь, который будет работать с Recovery Manager |
| Нет |
| Директория для размещения файлов Recovery Manager |
| Нет |
| Путь к CA сертификату OpenID провайдера на Ansible-узле |
| Нет |
| Путь к CA сертификату API Gateway на Ansible-узле |
| Нет |
:::::
Переменные для ролей можно задать одним из следующих способов:
- в inventory-файле
- в плейбуке
install.yml - в отдельном файле с переменными (например,
group_vars/dbbr.yml)
dbbr:
hosts:
dbbr_api:
ansible_host: "<dbbr_ip_address>"
# Переменные роли agent_manager
agent_manager_admin_db_user: postgres
agent_manager_admin_db_password: "<password>"
agent_manager_api_server:
address: 0.0.0.0:29010
mtls: true
agent_manager_websocket:
address: 0.0.0.0:29015
mtls: true
agent_manager_openid:
realm_url: "http://<realm_url>"
agent_manager_auth:
access_token_life_time: 15m
refresh_token_life_time: 72h
registration_token_life_time: 24h
agent_manager_log:
path: /path/to/log/agent-manager.log
agent_manager_task_manager:
http_address: "http://<dbbr_ip>:29020"
agent_manager_db:
host: 127.0.0.1
user: "<pbr_agent_manager>"
password: "<password>"
port: 5433
database: pbr_agent_manager
query_params: search_path=public
# КОД ПРОПУЩЕН: другие переменные роли agent_manager
# Переменные роли task_manager
task_manager_admin_db_user: postgres
task_manager_admin_db_password: "<password>"
task_manager_api_server:
address: 0.0.0.0:29020
task_manager_db:
host: <dbbr_ip>
user: "<pbr_task_manager>"
password: "<password>"
port: 5433
database: pbr_task_manager
query_params: search_path=public
task_manager_agent_manager:
http_address: https://<dbbr_ip>:29000
task_manager_open_id:
realm_url: http://realm-url
task_manager_auth:
access_token_life_time: 15m
refresh_token_life_time: 72h
registration_token_life_time: 24h
task_manager_log:
path: /path/to/log/task-manager.log
# КОД ПРОПУЩЕН: другие переменные роли task_manager
# Переменные роли storage_manager
storage_manager_admin_db_user: postgres
storage_manager_admin_db_password: "<password>"
storage_manager_api_server:
address: 0.0.0.0:29500
mtls: false
storage_manager_log:
path: /path/to/log/storage-service.log
max_size: 10
max_age: 14
max_backups: 14
use_local_time: true
compress_backups: false
storage_manager_db:
host: 127.0.0.1
user: "<pbr_storage_manager>"
password: "<password>"
port: 5433
database: pbr_storage_manager
query_params: search_path=public
storage_manager_auth:
access_token_life_time: 15m
refresh_token_life_time: 72h
registration_token_life_time: 24h
storage_manager_openid:
realm_url: http://realm-url
# КОД ПРОПУЩЕН: другие переменные роли storage_manager
# КОД ПРОПУЩЕН: Переменные других ролей: api_gateway, recovery_manager
- name: Install DBBR modules
hosts: dbbr
roles:
- role: api_gateway
become: true
- role: agent_manager
become: true
- role: task_manager
become: true
- role: storage_manager
become: true
vars:
# Переменные роли agent_manager
agent_manager_admin_db_user: postgres
agent_manager_admin_db_password: "<password>"
agent_manager_api_server:
address: 0.0.0.0:29010
mtls: true
agent_manager_websocket:
address: 0.0.0.0:29015
mtls: true
agent_manager_openid:
realm_url: "http://<realm_url>"
agent_manager_auth:
access_token_life_time: 15m
refresh_token_life_time: 72h
registration_token_life_time: 24h
agent_manager_log:
path: /path/to/log/agent-manager.log
agent_manager_task_manager:
http_address: "http://<dbbr_ip>:29020"
agent_manager_db:
host: 127.0.0.1
user: "<pbr_agent_manager>"
password: "<password>"
port: 5433
database: pbr_agent_manager
query_params: search_path=public
# КОД ПРОПУЩЕН: другие переменные роли agent_manager
# Переменные роли task_manager
task_manager_admin_db_user: postgres
task_manager_admin_db_password: "<password>"
task_manager_api_server:
address: 0.0.0.0:29020
task_manager_db:
host: <dbbr_ip>
user: "<pbr_task_manager>"
password: "<password>"
port: 5433
database: pbr_task_manager
query_params: search_path=public
task_manager_agent_manager:
http_address: https://<dbbr_ip>:29000
task_manager_open_id:
realm_url: http://realm-url
task_manager_auth:
access_token_life_time: 15m
refresh_token_life_time: 72h
registration_token_life_time: 24h
task_manager_log:
path: /path/to/log/task-manager.log
# КОД ПРОПУЩЕН: другие переменные роли task_manager
# Переменные роли storage_manager
storage_manager_admin_db_user: postgres
storage_manager_admin_db_password: "<password>"
storage_manager_api_server:
address: 0.0.0.0:29500
mtls: false
storage_manager_log:
path: /path/to/log/storage-service.log
max_size: 10
max_age: 14
max_backups: 14
use_local_time: true
compress_backups: false
storage_manager_db:
host: 127.0.0.1
"<pbr_storage_manager>"
password: "<password>"
port: 5433
database: pbr_storage_manager
query_params: search_path=public
storage_manager_auth:
access_token_life_time: 15m
refresh_token_life_time: 72h
registration_token_life_time: 24h
storage_manager_openid:
realm_url: http://realm-url
# КОД ПРОПУЩЕН: другие переменные роли storage_manager
# КОД ПРОПУЩЕН: Переменные других ролей: api_gateway, recovery_manager
# Переменные роли agent_manager
agent_manager_admin_db_user: postgres
agent_manager_admin_db_password: "<password>"
agent_manager_api_server:
address: 0.0.0.0:29010
mtls: true
agent_manager_websocket:
address: 0.0.0.0:29015
mtls: true
agent_manager_openid:
realm_url: "http://<realm_url>"
agent_manager_auth:
access_token_life_time: 15m
refresh_token_life_time: 72h
registration_token_life_time: 24h
agent_manager_log:
path: /path/to/log/agent-manager.log
agent_manager_task_manager:
http_address: "http://<dbbr_ip>:29020"
agent_manager_db:
host: 127.0.0.1
user: "<pbr_agent_manager>"
password: "<password>"
port: 5433
database: pbr_agent_manager
query_params: search_path=public
# КОД ПРОПУЩЕН: другие переменные роли agent_manager
# Переменные роли task_manager
task_manager_admin_db_user: postgres
task_manager_admin_db_password: "<password>"
task_manager_api_server:
address: 0.0.0.0:29020
task_manager_db:
host: <dbbr_ip>
user: "<pbr_task_manager>"
password: "<password>"
port: 5433
database: pbr_task_manager
query_params: search_path=public
task_manager_agent_manager:
http_address: https://<dbbr_ip>:29000
task_manager_open_id:
realm_url: http://realm-url
task_manager_auth:
access_token_life_time: 15m
refresh_token_life_time: 72h
registration_token_life_time: 24h
task_manager_log:
path: /path/to/log/task-manager.log
# КОД ПРОПУЩЕН: другие переменные роли task_manager
# Переменные роли storage_manager
storage_manager_admin_db_user: postgres
storage_manager_admin_db_password: "<password>"
storage_manager_api_server:
address: 0.0.0.0:29500
mtls: false
storage_manager_log:
path: /path/to/log/storage-service.log
max_size: 10
max_age: 14
max_backups: 14
use_local_time: true
compress_backups: false
storage_manager_db:
host: 127.0.0.1
"<pbr_storage_manager>"
password: "<password>"
port: 5433
database: pbr_storage_manager
query_params: search_path=public
storage_manager_auth:
access_token_life_time: 15m
refresh_token_life_time: 72h
registration_token_life_time: 24h
storage_manager_openid:
realm_url: http://realm-url
# КОД ПРОПУЩЕН: другие переменные роли storage_manager
# КОД ПРОПУЩЕН: Переменные других ролей: api_gateway, recovery_manager
Запуск установки
Перед запуском убедитесь, что виртуальное окружение .pbr активировано.
Для установки компонента DBBR выполните команды:
-
Если переменные заданы в inventory-файле или в разделе
varsплейбукаinstall.yml:cd pbr/owned/dbbr/package/scripts/Ansibleansible-playbook -i inventory.yml install.yml -
Если переменные вынесены в отдельный файл
group_vars/dbbr.yml, запустите плейбук из директории, в которой находятсяinventory.ymlи папкаgroup_vars:cd pbr/owned/dbbr/package/scripts/Ansibleansible-playbook -i inventory.yml install.yml -
Если часть переменных не задана ни в одном из файлов, их можно передать через командную строку с помощью флага
-e, например:ansible-playbook -i pbr/owned/dbbr/package/scripts/Ansible/inventory.yml -e common_rpm_dir_path=/home/ansible-user -e agent_manager_admin_db_user='postgres' -u <имя_пользователя> pbr/owned/dbbr/package/scripts/Ansible/install.yml
Проверка результата
Для проверки установки и работоспособности модулей компонента DBBR обратитесь к разделу Чек-лист проверки корректности работы.