Перейти к основному содержимому

Автоматизированная установка (с помощью Ansible)

Внимание!

Перед началом установки убедитесь, что выполнена подготовка окружения.

Порядок установки

Для автоматической установки CopyWala(PBR) с использованием Ansible выполните следующие этапы:

  1. Распаковка дистрибутива Copywala.

  2. Автоматизированная установка с помощью Ansible (обязательный шаг):

  3. Пример автоматизированной установки.

  4. Настройка интеграции Platform V CopyWala с внешними сервисами.

Распаковка дистрибутива CopyWala (обязательный шаг)

Последовательность действий

  1. Создайте директорию с дистрибутивом CopyWala (например, в каталоге /tmp):

    mkdir distrib
  2. Поместите дистрибутив CopyWala в директорию distrib (отредактируйте команду в соответствии с местонахождением директории distrib и дистрибутива PBR-D-X.X.X-XX-<версия ОС>-internal-full-distrib.zip):

    mv /путь к дистрибутиву/PBR-D-X.X.X-XX-<версия ОС>-internal-full-distrib.zip /путь к директории/distrib/
  3. Перейдите в директорию distrib CopyWala:

    cd /путь к директории/distrib/
  4. Создайте директории для распаковки архива:

    mkdir -p pbr/owned/dbbr/dbbr_bin
    mkdir -p pbr/owned/pbra/pbra_bin
    mkdir -p pbr/owned/pbss/pbss_bin
  5. Распакуйте архив для установки:

    unzip -d pbr PBR-1.2.3-*-internal-full-distrib.zip
    unzip -d pbr/owned pbr/PBR-1.2.3-*-owned-distrib.zip
    unzip -d pbr/owned/dbbr pbr/owned/DBBR-bin-1.2.3-*-distrib.zip
    unzip -d pbr/owned/pbra pbr/owned/PBRA-bin-1.2.3-*-distrib.zip
    unzip -d pbr/owned/pbss pbr/owned/PBSS-bin-1.2.3-*-distrib.zip

Проверка результата

Убедитесь, что в директориях pbr/owned/*/rpms присутствуют необходимые файлы, соответствующие составу дистрибутива. Выполните команду: ls pbr/owned/*/package/scripts/Ansible/. Вывод должен содержать такой список директорий и файлов:

  • collections
  • install.yml
  • inventory_example.yml
  • playbook_example.yml
  • requirements.yml
  • roles
  • vars

Автоматизированная установка с помощью Ansible (обязательный шаг)

Последовательность действий

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

  1. Создайте виртуальное окружение. Рекомендуется использовать Python 3.9:

    python3 -m venv .pbr
  2. Активируйте виртуальное окружение:

    source .pbr/bin/activate
  3. Установите необходимые пакеты:

    pip install 'ansible==8.7.0'
примечание

После завершения работы виртуальную среду можно отключить. Выполните консольную команду: deactivate.

Проверка результата

Проверьте, что установка Ansible прошла успешно: ansible --version. В результате вывод не должен содержать ошибок. Команда pip list должна вывести зависимости:

    ansible             8.7.0
ansible-core 2.15.13

Генерация сертификатов (обязательный шаг)

Для работы компонентов CopyWala с TLS-шифрованием необходимо сгенерировать сертификаты. Более подробный процесс описан в роли certs.

Последовательность действий

  1. Определение переменных для компонента PBRA:

    1. Перейдите в директорию со скриптами установки:

      cd pbr/owned/pbra/package/scripts/Ansible
    2. На основе файла inventory_example.yml укажите адрес ВМ, на которые необходимо установить компоненты.

      Установка компонентов на узлы происходит в соответствии со следующей таблицей:

Группа в inventory-файле

Компоненты

pbra

Copywala

Пример inventory-файла:

pbra:
hosts:
pbra-host:
ansible_host: <IP_ADDRESS>
  1. Укажите необходимые значения переменных для каждой из роли. Это можно сделать в созданном inventory-файле, плейбуке (install.yml) или в отдельном файле с переменными. Пример плейбука представлен в файле playbook_example.yml. Ниже представлен перечень Ansible ролей для инсталляции CopyWala: таблицы со всеми переменными этих ролей, их значениями по умолчанию и описанием.

  2. Определение переменных для компонента DBBR:

    1. Перейдите в директорию со скриптами установки:

      cd pbr/owned/dbbr/package/scripts/Ansible
    2. На основе файла inventory_example.yml укажите адрес ВМ, на которые необходимо установить компоненты.

      Установка компонентов на узлы происходит в соответствии со следующей таблицей:

Группа в inventory-файле

Компоненты

dbbr

Agent Manager, API-gateway, Task Manager, Storage Manager

recovery

Recovery Manager

storage_service

Storage Service

Пример inventory-файла:

dbbr:
hosts:
dbbr-host:
ansible_host: <IP_ADDRESS>
recovery:
hosts:
recovery-host:
ansible_host: <IP_ADDRESS>
storage_manager:
hosts:
storage_host:
ansible_host: <IP_ADDRESS>
  1. Укажите необходимые значения переменных для каждой из роли. Это можно сделать в созданном inventory-файле, плейбуке (install.yml) или в отдельном файле с переменными. Пример плейбука представлен в файле playbook_example.yml. Ниже представлен перечень Ansible ролей для инсталляции CopyWala: таблицы со всеми переменными этих ролей, их значениями по умолчанию и описанием.

  2. Определение переменных для компонента PBSS:

    1. Перейдите в директорию со скриптами установки:

      cd pbr/owned/pbss/package/scripts/Ansible
    2. На основе файла inventory_example.yml укажите адрес ВМ, на которые необходимо установить компоненты.

      Установка компонентов на узлы происходит в соответствии со следующей таблицей:

Группа в inventory-файле

Компоненты

storage_service

Storage Service

  1. Укажите необходимые значения переменных для каждой из роли. Это можно сделать в созданном inventory-файле, плейбуке (install.yml) или в отдельном файле с переменными. Пример плейбука представлен в файле playbook_example.yml. Ниже представлен перечень Ansible ролей для инсталляции CopyWala: таблицы со всеми переменными этих ролей, их значениями по умолчанию и описанием.
примечание

Перед запуском ознакомьтесь со всеми переменными.

Роль agent-manager

Роль предназначена для установки Agent Manager. Роль берет нужный rpm-файл для установки из переменной agent_manager_rpm_path, копирует его на целевой узел, производит установку, настройку и запуск Agent Manager. Значение переменной agent_manager_rpm_path можно задать вручную или воспользоваться ролью common.

Ниже приведено описание переменных роли и их значения по умолчанию:

Название переменной

Описание

Значение по умолчанию

agent_manager_rpm_path

Путь к rpm-файлу установщика компонента Agent Manager. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования.

''

agent_manager_user

Пользователь для запуска службы Agent Manager

pbr

agent_manager_config_dir

Директория с конфигурационным файлом компонента Agent Manager

/etc/pbr

agent_manager_config_file

Имя конфигурационного файла компонента Agent Manager

agent-manager.yaml

agent_manager_api_server

Словарь, описывающий настройку веб-сервера APIAgent Manager. Обязательный параметр. Содержит следующие ключи:<br />address – адрес и порт, которые Agent Manager использует для входящих запросов;<br />mtls – использование взаимной аутентификации

{}

agent_manager_websocket

Словарь, описывающий настройку веб сокета Agent Manager. Обязательный параметр. Содержит следующие ключи:<br />address – адрес и порт, которые Agent Manager использует для входящих запросов;<br />mtls – использование взаимной аутентификации

{}

agent_manager_openid

Словарь, описывающий параметры подключения к OpenID провайдеру. Обязательный параметр. Содержит ключ: realm_url – адрес OpenID

{}

agent_manager_bootstrap_db

Создание служебной базы данных (далее БД). Параметры БД (название, владелец) необходимо взять из переменной agent_manager_db

true

agent_manager_admin_db_user

Администратор баз данных для создания служебной базы данных

postgres

agent_manager_admin_db_password

Пароль администратора баз данных для создания служебной базы данных

postgres

agent_manager_db

Словарь, описывающий параметры служебной БД. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br />host – адрес кластера базы данных;<br />port – порт кластера базы данных;<br />user – пользователь служебной базы данных;<br />password – пароль служебной базы данных;<br />database – название служебной базы данных;<br />query_params – схема базы данных

{}

agent_manager_auth

Словарь, описывающий настройки выпуска токенов доступа для агентских приложений. Обязательный параметр. Если в словаре отсутствуют параметры public_key и private_key, то ключи будут сгенерированы. Если в словаре присутствуют параметры public_key[local_path] и private_key[local_path], то эти ключи будут скопированы на целевой узел. Параметры public_key[local_path] и private_key[local_path] должны ссылаться на ключи, которые лежат на Ansible узле

{}

agent_manager_vault

Словарь, описывающий параметры подключения к HarhiCorp/SecMan. Содержит следующие ключи:<br />server – адрес HarhiCorp/SecMan,<br />approle – данные для авторизации в HarhiCorp/SecMan.

{}

agent_manager_tls

Словарь, описывающий глобальные параметры TLS. Содержит следующие ключи:<br />rootca – путь к сертификату удостоверяющего центра;<br />cert – путь к сертификату Agent Manager;<br />key – путь к ключу Agent Manager

{}

agent_manager_log

Словарь, описывающий параметры логирования. Обязательный параметр. Содержит следующие ключи:<br />path – путь к файлу, в который будут записывать логи;<br />max_size – максимальный размер логов в мегабайтах;<br />max_age – длительность хранения логов в дня;<br />max_backups – максимальное число файлов с логами;<br />use_local_time – использование местного времени;<br />compress_backups – сжатие файлов с логами с помощью gzip

{}

Роль api-gateway

Роль предназначена для генерации конфигурационного файла прокси-сервера SynGX, выполняющего функции API gateway, а также включает операции по копированию нужных сертификатов и последующему запуску прокси-сервера. Для установки необходимо указать путь к RPM SynGX - api_gateway_rpm_path.

Ниже приведено описание переменных роли и их значения по умолчанию:

Название переменной

Описание

Значение по умолчанию

api_gateway_rpm_path

Путь к rpm-файлу установщика Syngx. Обязательный параметр (не должен быть пустым)

''

api_gateway_user

Пользователь Syngx

syngx

api_gateway_server_name

Адрес, на который направляются запросы для последующей обработки Syngx

localhost

api_gateway_config_dir

Директория для конфигурационного файла

/opt/syngx/conf

api_gateway_admin_port

Порт, на котором будет доступна служебная информация

29001

api_gateway_port

Порт, на котором Syngx будет принимать входящие запросы

29000

api_gateway_agent_manager_ip

IP-адрес, на котором доступен Agent Manager

{IP_ADDRESS}

api_gateway_agent_manager_port

Порт, на котором доступен API Agent Manager

29010

api_gateway_agent_manager_ws_port

Порт, на котором доступен WebSocket Agent Manager

29015

api_gateway_agent_manager_tls

Использование tls-шифрования для подключения к Agent Manager

true

api_gateway_agent_manager_mtls

Использование взаимной аутентификации с помощью сертификатов для подключения к Agent Manager

false

api_gateway_storage_service_ip

IP-адрес, на котором доступен Storage Service

{IP_ADDRESS}

api_gateway_storage_service_port

Порт, на котором доступен Storage Service

29050

api_gateway_storage_service_tls

Использование tls-шифрования для подключения к Storage Service

true

api_gateway_storage_service_mtls

Использование взаимной аутентификации с помощью сертификатов для подключения к Storage Service

false

api_gateway_task_manager_ip

IP-адрес, на котором доступен Task Manager

{IP_ADDRESS}

api_gateway_task_manager_port

Порт, на котором доступен Task Manager

29020

api_gateway_task_manager_tls

Использование tls-шифрования для подключения к Task Manager

true

api_gateway_task_manader_mtls

Использование взаимной аутентификации с помощью сертификатов для подключения к Task Manager

false

api_gateway_upstream_rootca

Путь к сертификату, с помощью которого производится проверка валидности сертификатов у компонентов Copywala при перенаправлении запросов

''

api_gateway_downstream_rootca

Путь к сертификату, с помощью которого производится проверка валидности сертификатов у клиентских машин при перенаправлении запросов

''

api_gateway_tls

Словарь, указывающий пути к сертификатам Syngx. Содержит следующие ключи:<br />cert_file – путь к сертификату;<br />key_file – путь к ключу сертификата

{}

Роль copywala

Роль предназначена для установки copywala. Роль берет нужный rpm-файл для установки из переменной copywala_rpm_path, копирует его на целевой узел, производит установку и настройку. Значение переменной copywala_rpm_path можно задать вручную или воспользоваться ролью common.

Ниже приведено описание переменных роли и их значения по умолчанию:

Название переменной

Описание

Значение по умолчанию

copywala_rpm_path

Путь к rpm-файлу установщика компонента CopyWala. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования

''

copywala_config_dir

Директория с конфигурационным файлом компонента CopyWala

/etc/pbr

copywala_config_file

Имя конфигурационного файла компонента CopyWala

copywala.yaml

copywala_admin_db_user

Администратор баз данных для создания служебной базы данных

postgres

copywala_admin_db_password

Пароль администратора баз данных для создания служебной базы данных

postgres

copywala_config_params

Словарь, описывающий параметры конфигурации целевой базы данных. Содержит следующие ключи:<br />backup_destination_uri – путь, по которому будет доступна резервная копия;<br />wal_destination_uri – путь, по которому будут доступны WAL-записи;<br />restore_data_path – путь к PGDATA

{}

copywala_user

Пользователь Copywala

postgres

copywala_target_db

Словарь, описывающий параметры целевой БД. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br />host – адрес кластера базы данных;<br />port– порт кластера базы данных;<br />user – пользователь служебной базы данных;<br />password – пароль служебной базы данных;<br />database – название служебной базы данных;<br />query_params – схема базы данных

{}

copywala_pbra_db

Словарь, описывающий параметры служебной БД. Обязательный параметр. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br />host – адрес кластера базы данных;<br />port – порт кластера базы данных;<br />user – пользователь служебной базы данных;<br />password – пароль служебной базы данных;<br />database – название служебной базы данных;<br />query_params – схема базы данных

{}

copywala_tls

Словарь, описывающий глобальные параметры TLS. Содержит следующие ключи:<br />rootca – путь к сертификату удостоверяющего центра;<br />cert – путь к сертификату copywala;<br />key – путь к ключу copywala

{}

copywala_archive_settings

Словарь, описывающий параметры архива. Содержит следующие ключи:<br />archive_type – тип архива;<br />upload_params – структура архива

{}

copywala_backup_policy

Словарь, описывающий параметры политику резервного копирования. Содержит следующие ключи:<br />strategy – формат создания резервной копии;<br />fast_checkpoint – создание чек поинтов;<br />workers_no – количество потоков для создания РК;<br />progress_latency – шаг в долях от размера резервной копии, на котором сообщается прогресс

{}

copywala_log

Словарь, описывающий параметры логирования copywala. Обязательный параметр. Содержит следующие ключи:<br />path – путь к файлу, в который будут записывать логи;<br />max_size – максимальный размер логов в мегабайтах;<br />max_age – длительность хранения логов в дня;<br />max_backups – максимальное число файлов с логами;<br />use_local_time – использование местного времени;<br />compress_backups – сжатие файлов с логами с помощью gzip

{}

Роль pbr-agent

Роль предназначена для установки pbr-agent. Роль берет нужный rpm-файл для установки из переменной pbr_agent_rpm_path, копирует его на целевой узел, производит установку и настройку. Значение переменной pbr_agent_rpm_path можно задать вручную или воспользоваться ролью common.

Ниже приведено описание переменных роли и их значения по умолчанию:

Название переменной

Описание

Значение по умолчанию

pbr_agent_rpm_path

Путь к rpm-файлу установщика компонента pbr-agent. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования

''

pbr_agent_config_dir

Директория с конфигурационным файлом компонента pbr-agent

/etc/pbr

pbr_agent_config_file

Имя конфигурационного файла компонента pbr-agent

pbr-agent.yaml

pbr_agent_bootstrap_db

Создание служебной базы данных (далее БД)

true

pbr_agent_admin_db_user

Администратор баз данных для создания служебной базы данных

postgres

pbr_agent_admin_db_password

Пароль администратора баз данных для создания служебной базы данных

postgres

pbr_agent_db

Словарь, описывающий параметры служебной БД. Обязательный параметр. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br />host – адрес кластера базы данных;<br />port – порт кластера базы данных;<br />user – пользователь служебной базы данных;<br />password – пароль служебной базы данных;<br />database – название служебной базы данных;<br />query_params – схема базы данных

{}

pbr_agent_api_gateway

Словарь, описывающий настройку веб-сервера API API-gateway. Содержит следующие ключи:<br />http_address – адрес и порт, по которому доступен API API-gateway;<br />ws_address – адрес и порт, по которому доступен WebSocket API-gateway

{}

pbr_agent_heartbeat_delay

Интервал между запросами PBR-Agent к Copywala для проверки работоспособности

10s

pbr_agent_copywala

Словарь, описывающий настройку Copywala. Содержит ключ: config_path – путь к конфигурационному файлу Copywala

{}

pbr_agent_tls

Словарь, описывающий PBR-Agent параметры TLS. Содержит следующие ключи:<br />rootca – путь к сертификату удостоверяющего центра;<br />cert – путь к сертификату PBR-Agent;<br />key – путь к ключу PBR-Agent

{}

pbr_agent_vault

Словарь, описывающий параметры подключения к HarhiCorp/SecMan. Содержит следующие ключи:<br />server – адрес HarhiCorp/SecMan;<br />approle данные для авторизации в HarhiCorp/SecMan

{}

pbr_agent_log

Словарь, описывающий параметры логирования copywala. Обязательный параметр. Содержит следующие ключи:<br />path – путь к файлу, в который будут записывать логи;<br />max_size – максимальный размер логов в мегабайтах;<br />max_age – длительность хранения логов в дня;<br />max_backups – максимальное число файлов с логами;<br />use_local_time – использование местного времени;<br />compress_backups – сжатие файлов с логами с помощью gzip

{}

Роль certs

Роль предназначена для генерации самоподписанных CA и сертификатов для Agent Manager, API-gateway, Copywala, PBR-Agent, Recovery Manager, Storage Service, Storage Manager и Task Manager.

Пример файла componentMap.yml с добавленным параметров san:

  1. Перейдите в директорию с ролью cd pbr/owned/dbbr/package/scripts/Ansible (роль также дублируется в архиве pbra и pbss).
  2. Создайте inventory-файл для генерации сертификатов, например inventory-cert.yml. Пример inventory-файла для генерации сертификатов, в котором нужно указать IP-адрес ВМ, на которой будут генерироваться сертификаты:
cert:
hosts:
cert-host:
ansible_host: <IP адрес>
  1. Создайте плейбук-файл для генерации сертификатов, например playbook-cert.yml. Укажите в нем все необходимые переменные. Генерация выполняется исходя из переменной certs_components либо файла, заданного в переменной certs_var_file, который служит для объединения следующих файлов: pbr/owned/dbbr/dbbr_bin/package/scripts/Ansible/vars/components.yml, pbr/owned/pbra/pbra_bin/package/scripts/Ansible/vars/components.yml и pbr/owned/pbss/pbss_bin/package/scripts/Ansible/vars/components.yml.
Внимание!

Предварительно каждому компоненту нужно задать параметр san, содержащий список, включающий DNS-записи узла, где развернут этот компонент, а также его IP-адрес.

Пример плейбук-файла для генерации сертификатов:

- name: Certs
hosts: cert-host
become: true
roles:
- roles/certs
vars:
certs_organization: Sbertech
certs_email: Sbertech@sbertech.ru
certs_var_file: componentMap.yml
ansible_python_interpreter: /usr/bin/python3.9
certs_components:
agent-manager:
version: 1.2.0
san:
- DNS:localhost
- DNS:dbbr.local
- IP:127.0.0.1
- IP:<IP-address>
api-gateway:
san:
- DNS:localhost
- DNS:dbbr.local
- IP:127.0.0.1
- IP:<IP-address>
copywala:
version: 1.2.0
san:
- DNS:localhost
- DNS:pbra.local
- IP:127.0.0.1
- IP:<IP-address>
pbr-agent:
san:
- DNS:localhost
- DNS:pbra.local
- IP:127.0.0.1
- IP:<IP-address>
recovery-manager:
version: 1.2.0
san:
- DNS:localhost
- DNS:dbbr.local
- IP:127.0.0.1
- IP:<IP-address>
storage-service:
version: 1.2.0
san:
- DNS:localhost
- DNS:pbss.local
- IP:127.0.0.1
- IP:<IP-address>
storage-manager:
version: 1.2.0
san:
- DNS:localhost
- DNS:dbbr.local
- IP:127.0.0.1
- IP:<IP-address>
task-manager:
version: 1.2.0
san:
- DNS:localhost
- DNS:dbbr.local
- IP:127.0.0.1
- IP:<IP-address>
  1. Запустите генерацию сертификатов:
ansible-playbook -i inventory-cert.yml playbook-cert.yml

Роль генерирует сертификаты на удаленном узле, создает архив и скачивает его на Ansible узел.

Ниже приведено описание переменных роли и их значения по умолчанию:

Название переменной

Описание

Значение по умолчанию

certs_components

Словарь с переменными для выполнения роли

{}

certs_var_file

Путь к файлу с переменными

vars/components.yml

certs_dir

Директория для временного сохранения сертификатов на удаленном узле

/tmp/certificates

certs_archive_format

Формат архива с сертификатами

tar

certs_local_dir

Директория для сохранения сертификатов на Ansible узле

'./'

certs_ca_path

Путь к корневому сертификату. Если передать пустую строку, будет сгенерирован новый

``

certs_ca_key_path

Путь к ключу корневого сертификата. Необходим для генерации сертификатов для компонентов Copywala

``

certs_country

Код страны регистрации организации

RU

certs_state_or_province_name

Область, регион регистрации организации

Moscow

certs_organization

Организация, для которой выпускается сертификат

'myCompany'

certs_email

Почта администратора организации

''

certs_common_name

Доменное имя, для которого заказывается сертификат

''

Роль common

Роль предназначена для поиска rpm-файлов в директории и сохранения путей к ним в переменные для их последующего использования в ролях agent_manager, copywala, pbr-agent, recovery_manager,storage-service, storage-manager и task_manager. Поиск нужных rpm-файлов осуществляется на основе перечня компонентов и их версии, указанных в файле components.yml, который находится в директории pbr/owned/dbbr/dbbr_bin/package/scripts/Ansible/var, а также дублируется в PBRA, PBSS.

Ниже приведено описание переменных роли и их значения по умолчанию:

Название переменной

Описание

Значение по умолчанию

common_rpm_dir_path

Путь к директории с rpm-файлами CopyWala

''

Роль recovery-manager

Роль предназначена для установки Recovery Manager. Роль берет нужный rpm-файл для установки из переменной recovery_manager_rpm_path, копирует его на целевой узел и производит установку. Значение переменной recovery_manager_rpm_path можно задать вручную или воспользоваться ролью common.

Ниже приведено описание переменных роли и их значения по умолчанию:

Название переменной

Описание

Значение по умолчанию

recovery_manager_rpm_path

Путь к rpm-файлу установщика Recovery Manager. Обязательный параметр (не должен быть пустым)

''

recovery_manager_user

Пользователь, который будет работать с Recovery Manager

$USER

recovery_manager_config_dir

Директория для размещения файлов Recovery Manager

/home/{{ recovery_manager_user }}/.pbr

recovery_manager_open_id_rootca

Путь к CA сертификату OpenID провайдера на Ansible узле

''

recovery_manager_ag_rootca

Путь к CA сертификату API Gateway на Ansible узле

''

Роль storage-service

Роль предназначена для установки storage-service. Роль берет нужный rpm-файл для установки из переменной storage_service_rpm_path, копирует его на целевой узел, производит установку и настройку. Значение переменной storage_service_rpm_path можно задать вручную или воспользоваться ролью common.

Ниже приведено описание переменных роли и их значения по умолчанию:

Название переменной

Описание

Значение по умолчанию

storage_service_rpm_path

Путь к rpm-файлу установщика компонента Storage Service. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования.

''

storage_service_user

Пользователь для запуска службы Storage Service

pbr

storage_service_config_dir

Директория с конфигурационным файлом компонента Agent Manager

/etc/pbr

storage_service_config_dir

Имя конфигурационного файла с компонентом Storage Service

storage-service.yaml

storage_service_api_server

Словарь, описывающий настройку веб-сервера API Storage Service. Обязательный параметр. Содержит следующие ключи:<br />address – адрес и порт, которые Storage Service использует для входящих запросов;<br />mtls – использование взаимной аутентификации

{}

storage_service_grpc

Словарь, описывающий настройку GRPC. Обязательный параметр

{}

storage_service_config_params

Словарь, описывающий параметры сервиса. Обязательный параметр. Содержит следующие ключи:<br />storage_path – расположение, в котором будут храниться файлы Storage Service;<br />max_concurrent_streams – максимальное количество потоков для одного хоста

{}

storage_service_tls

Словарь, описывающий Storage Service параметры TLS. Содержит следующие ключи:<br />rootca – путь к сертификату удостоверяющего центра;<br />cert – путь к сертификату Storage Service;<br />key – путь к ключу Storage Service

{}

storage_service_log

Словарь, описывающий параметры логирования. Обязательный параметр. Содержит следующие ключи:<br />path – путь к файлу, в который будут записывать логи;<br />max_size– максимальный размер логов в мегабайтах;<br />max_age – длительность хранения логов в дня;<br />max_backups – максимальное число файлов с логами;<br />use_local_time – использование местного времени;<br />compress_backups – сжатие файлов с логами с помощью gzip

{}

Роль task-manager

Роль предназначена для установки Task Manager. Роль берет нужный rpm-файл для установки из переменной task_manager_rpm_path, копирует его на целевой узел, производит установку, настройки и запуск Task Manager. Значение переменной task_manager_rpm_path можно задать вручную или воспользоваться ролью common.

Ниже приведено описание переменных роли и их значения по умолчанию:

Название переменной

Описание

Значение по умолчанию

task_manager_rpm_path

Путь к rpm-файлу установщика компонента Task Manager. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования.

''

task_manager_user

Пользователь для запуска службы

pbr

task_manager_config_dir

Директория с конфигурационным файлом компонента Task Manager

/etc/pbr

task_manager_config_file

Имя конфигурационного файла компонента Task Manager

task-manager.yaml

task_manager_api_server

Словарь, описывающий настройку веб-сервера API Task Manager. Обязательный параметр. Содержит ключ: address – адрес и порт, которые Task Manager использует для входящих запросов

127.0.0.1

task_manager_tls

Словарь, указывающий пути к сертификатам Task Manager на Ansible узле. Содержит следующие ключи:<br />rootca – путь к корневому CA на Ansible узле;<br />cert – путь к сертификату на Ansible узле;<br />key – путь к ключу сертификата на Ansible узле

{}

task_manager_agent_manager

Словарь, описывающий настройку Agent Manager. Обязательный параметр. Содержит ключ: http_address – адрес и порт, по которым доступен Agent Manager

{}

task_manager_open_id

Словарь, описывающий параметры подключения к OpenID провайдеру. Обязательный параметр. Содержит ключ: realm_url – адрес OpenID

{}

task_manager_bootstrap_db

Создание служебной базы данных (далее БД)

true

task_manager_admin_db_user

Администратор баз данных для создания служебной базы данных

postgres

task_manager_admin_db_password

Пароль администратора баз данных для создания служебной базы данных

postgres

task_manager_db

Словарь, описывающий параметры служебной БД. Обязательный параметр. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br />host – адрес кластера базы данных;<br />port – порт кластера базы данных;<br />user – пользователь служебной базы данных;<br />password – пароль служебной базы данных;<br />database – название служебной базы данных;<br />query_params – схема базы данных

{}

task_manager_auth

Словарь, описывающий настройки выпуска токенов доступа для агентских приложений. Обязательный параметр. Если в словаре отсутствуют параметры public_key и private_key, то ключи будут сгенерированы. Если в словаре присутствуют параметры public_key[local_path] и private_key[local_path], то эти ключи будут скопированы на целевой узел. Параметры public_key[local_path] и private_key[local_path] должны ссылаться на ключи, которые лежат на Ansible узле

{}

task_manager_log

Словарь, описывающий параметры логирования. Обязательный параметр. Содержит следующие ключи:<br />path – путь к файлу, в который будут записывать логи; <br />max_size – максимальный размер логов в мегабайтах;<br />max_age – длительность хранения логов в дня;<br />max_backups – максимальное число файлов с логами;<br />use_local_time – использование местного времени;<br />compress_backups – сжатие файлов с логами с помощью gzip

{}

task_manager_vault

Словарь, описывающий параметры подключения к HarhiCorp/SecMan. Содержит следующие ключи:<br />server – адрес HarhiCorp/SecMan;<br />approle данные для авторизации в HarhiCorp/SecMan

{}

Роль storage-manager

Роль предназначена для установки storage-manager. Роль берет нужный rpm-файл для установки из переменной storage_manager_rpm_path, копирует его на целевой узел, производит установку, настройки и запуск Storage Manager. Значение переменной storage_manager_rpm_path можно задать вручную или воспользоваться ролью common.

Ниже приведено описание переменных роли и их значения по умолчанию:

Название переменной

Описание

Значение по умолчанию

storage_manager_rpm_path

Путь к rpm-файлу установщика компонента storage-manager. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования.

''

storage_manager_user

Пользователь для запуска службы

pbr

storage_manager_config_dir

Директория с конфигурационным файлом компонента storage-manager

/etc/pbr

storage_manager_config_file

Имя конфигурационного файла компонента storage-manager

storage-manager.yaml

storage_manager_api_server

Словарь, описывающий настройку веб-сервера API storage-manager. Обязательный параметр. Содержит следующие ключи:<br />address – адрес и порт, которые storage-manager использует для входящих запросов;<br />mtls – использование взаимной аутентификации

{}

storage_manager_bootstrap_db

Создание служебной базы данных (далее БД)

true

storage_manager_admin_db_user

Администратор баз данных для создания служебной базы данных

postgres

storage_manager_admin_db_password

Пароль администратора баз данных для создания служебной базы данных

postgres

storage_manager_db

Словарь, описывающий параметры служебной БД. Обязательный параметр. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br />host – адрес кластера базы данных;<br />port – порт кластера базы данных;<br />user – пользователь служебной базы данных;<br />password – пароль служебной базы данных;<br />database – название служебной базы данных;<br />query_params – схема базы данных

{}

storage_manager_auth

Словарь, описывающий настройки выпуска токенов доступа для агентских приложений. Обязательный параметр. Если в словаре отсутствуют параметры public_key и private_key, то ключи будут сгенерированы. Если в словаре присутствуют параметры public_key[local_path] и private_key[local_path], то эти ключи будут скопированы на целевой узел. Параметры public_key[local_path] и private_key[local_path] должны ссылаться на ключи, которые лежат на Ansible узле

{}

storage_manager_vault

Словарь, описывающий параметры подключения к HarhiCorp/SecMan. Содержит следующие ключи:<br />server – адрес HarhiCorp/SecMan;<br />approle данные для авторизации в HarhiCorp/SecMan

{}

storage_manager_openid

Словарь, описывающий параметры подключения к OpenID провайдеру. Обязательный параметр. Содержит ключ: realm_url – адрес OpenID

{}

storage_manager_tls

Словарь, указывающий пути к сертификатам storage-manager на Ansible узле. Содержит следующие ключи:<br />rootca – путь к корневому CA на Ansible узле;<br />cert – путь к сертификату на Ansible узле;<br />key – путь к ключу сертификата на Ansible узле

{}

storage_manager_log

Словарь, описывающий параметры логирования. Обязательный параметр. Содержит следующие ключи:<br />path – путь к файлу, в который будут записывать логи; <br />max_size – максимальный размер логов в мегабайтах;<br />max_age – длительность хранения логов в дня;<br />max_backups – максимальное число файлов с логами;<br />use_local_time – использование местного времени;<br />compress_backups – сжатие файлов с логами с помощью gzip

{}

Роль pbr-agent

Роль предназначена для установки pbr-agent. Роль берет нужный rpm-файл для установки из переменной pbr_agent_rpm_path, копирует его на целевой узел, производит установку, настройки и запуск PBR-Agent. Значение переменной pbr_agent_rpm_path можно задать вручную или воспользоваться ролью common.

Ниже приведено описание переменных роли и их значения по умолчанию:

Название переменной

Описание

Значение по умолчанию

pbr_agent_rpm_path

Путь к rpm-файлу установщика компонента pbr-agent. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования

''

pbr_agent_config_dir

Директория с конфигурационным файлом компонента pbr-agent

/etc/pbr

pbr_agent_config_file

Имя конфигурационного файла компонента pbr-agent

pbr-agent.yaml

pbr_agent_bootstrap_db

Создание служебной базы данных (далее БД)

true

pbr_agent_admin_db_user

Администратор баз данных для создания служебной базы данных

postgres

pbr_agent_admin_db_password

Пароль администратора баз данных для создания служебной базы данных

postgres

pbr_agent_db

Словарь, описывающий параметры служебной БД. Обязательный параметр. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br />host – адрес кластера базы данных;<br />port – порт кластера базы данных;<br />user – пользователь служебной базы данных;<br />password – пароль служебной базы данных;<br />database – название служебной базы данных;<br />query_params – схема базы данных

{}

pbr_agent_api_gateway

Словарь, описывающий настройку веб-сервера API API-gateway. Содержит следующие ключи:<br />http_address – адрес и порт, по которому доступен API API-gateway;<br />ws_address – адрес и порт, по которому доступен WebSocket API-gateway

{}

pbr_agent_heartbeat_delay

Интервал между запросами PBR-Agent к Copywala для проверки работоспособности

10s

pbr_agent_copywala

Словарь, описывающий настройку Copywala. Содержит ключ: config_path – путь к конфигурационному файлу Copywala

{}

pbr_agent_tls

Словарь, описывающий PBR-Agent параметры TLS. Содержит следующие ключи:<br />rootca – путь к сертификату удостоверяющего центра;<br />cert – путь к сертификату PBR-Agent;<br />key – путь к ключу PBR-Agent

{}

pbr_agent_vault

Словарь, описывающий параметры подключения к HarhiCorp/SecMan. Содержит следующие ключи:<br />server – адрес HarhiCorp/SecMan;<br />approle данные для авторизации в HarhiCorp/SecMan

{}

pbr_agent_log

Словарь, описывающий параметры логирования copywala. Обязательный параметр. Содержит следующие ключи:<br />path – путь к файлу, в который будут записывать логи;<br />max_size – максимальный размер логов в мегабайтах;<br />max_age – длительность хранения логов в дня;<br />max_backups – максимальное число файлов с логами;<br />use_local_time – использование местного времени;<br />compress_backups – сжатие файлов с логами с помощью gzip

{}

Запуск автоматизированной установки (обязательный шаг)

Последовательность действий

  1. Перед запуском установки обновите (или установите) ansible-galaxy коллекции. Необходимые зависимости:

Название коллекции

Версия

sbt-pbr

1.0.0

community-postgresql

3.9.1

community-library_inventory_filtering_v1

1.0.2

Пример команды для установки коллекции:

ansible-galaxy collection install pbr/owned/dbbr/dbbr_bin/package/scripts/Ansible/collections/sbt-pbr-1.0.0.tar.gz
  1. Выполните команды для установки.

    Примеры команды:

    # Все переменные указаны в inventory.yml файле
    cd pbr/owned/pbra/package/scripts/Ansible
    .pbr/bin/ansible-playbook -i inventory.yml install.yml

    cd pbr/owned/dbbr/package/scripts/Ansible
    .pbr/bin/ansible-playbook -i inventory.yml install.yml

    cd pbr/owned/pbss/package/scripts/Ansible
    .pbr/bin/ansible-playbook -i inventory.yml install.yml

    # Часть переменных передается через командную строку
    .pbr/bin/ansible-playbook -i inventory.yml -e common_rpm_dir_path=/home/ansible-user -e task_manager_listen_address='0.0.0.0' -e task_manager_listen_port='29020' -u <имя плользователя> pbr/owned/dbbr/package/scripts/Ansible/install.yml

    .pbr/bin/ansible-playbook -i inventory.yml -e common_rpm_dir_path=/home/ansible-user -e copywala_admin_db_user='postgres' -u <имя плользователя> pbr/owned/pbra/package/scripts/Ansible/install.yml

    .pbr/bin/ansible-playbook -i inventory.yml -e common_rpm_dir_path=/home/ansible-user -e storage_service_rpm_path='/tmp/path/to/rpm' -u <имя плользователя> ppbr/owned/pbss/package/scripts/Ansible/install.yml

Проверка результата

Для проверки установки и работоспособности компонентов CopyWala обратитесь к разделу Проверка работоспособности.

Пример автоматизированной установки

Последовательность действий

  1. Скачивайте дистрибутив в /tmp и распакуйте его:

mv PBR-D-X.X.X-XX-<версия ОС>-internal-full-distrib.zip /tmp

mkdir -p pbr/owned/dbbr
mkdir -p pbr/owned/pbra
mkdir -p pbr/owned/pbss

unzip -d pbr PBR-1.2.3-*-internal-full-distrib.zip
unzip -d pbr/owned pbr/PBR-1.2.3-*-owned-distrib.zip
unzip -d pbr/owned/dbbr pbr/owned/DBBR-bin-1.2.3-*-distrib.zip
unzip -d pbr/owned/pbra pbr/owned/PBRA-bin-1.2.3-*-distrib.zip
unzip -d pbr/owned/pbss pbr/owned/PBSS-bin-1.2.3-*-distrib.zip
  1. Для защищенной передачи данных между компонентами Copywala сгенерируйте сертификаты для TLS-шифрования. Сертификаты можно сгенерировать вручную или с помощью Ansible роли certs.
примечание

Сертификат должен содержать в subjectAltName свой DNS и IP-адрес хоста с компонентом Copywala

При использовании роли можно использовать готовый RootCA сертификат. Для этого при запуске роли на Ansible узле передайте путь к сертификату (certs_ca_path) и соответствующий ему секретный ключ (certs_ca_key_path). Переменные можно добавить в плейбук или передавать при запуске Ansible роли.

Также для генерации сертификатов необходим файл componentMap.yml, пример представлен в описании роли certs.

Пример плейбук-файла для генерации сертификатов (RootCA сертификат и ключ расположены /tmp/crt) (роль для генерации сертификатов дублируется в архиве PBRA и DBBR, поэтому в плейбуке можно указывать любую роль):

Если rootCA и ключ отсутствует:

- name: Certs
hosts: cert-host
become: true
roles:
- roles/certs
vars:
certs_organization: Sbertech
certs_email: Sbertech@sbertech.ru
certs_var_file: componentMap.yml
ansible_python_interpreter: /usr/bin/python3.9

Если rootCA сертификат (rootCA.crt) и ключ (rootCA.key) лежит в /tmp:

- name: Certs
hosts: cert-host
become: true
roles:
- roles/certs
vars:
certs_organization: Sbertech
certs_email: Sbertech@sbertech.ru
certs_var_file: componentMap.yml
certs_ca_path: /tmp/rootCA.crt
certs_ca_key_path: /tmp/rootCA.key
ansible_python_interpreter: /usr/bin/python3.9
  1. Для запуска ролей и установки компонентов CopyWala необходимо дополнить файлы inventory_example.yml и playbook_example.yml переменными для узлов. Переменные также можно записать в group_vars/pbra, group_vars/dbbr, group_vars/recovery, group_vars/storage_service.
Примеры файлов

pbra:
hosts:
pbra-host:
ansible_host: {IP_ADDRESS}
  1. Для установки компонентов выполните команды:
    cd pbr/owned/pbra/package/scripts/Ansible
.pbr/bin/ansible-playbook -i inventory.yml install.yml

cd pbr/owned/dbbr/package/scripts/Ansible
.pbr/bin/ansible-playbook -i inventory.yml install.yml

cd pbr/owned/pbss/package/scripts/Ansible
.pbr/bin/ansible-playbook -i inventory.yml install.yml

# Часть переменных передается через командную строку
.pbr/bin/ansible-playbook -i inventory.yml -e common_rpm_dir_path=/home/ansible-user -e task_manager_listen_address='0.0.0.0' -e task_manager_listen_port='29020' -u <имя плользователя> pbr/owned/dbbr/package/scripts/Ansible/install.yml

.pbr/bin/ansible-playbook -i inventory.yml -e common_rpm_dir_path=/home/ansible-user -e copywala_admin_db_user='postgres' -u <имя плользователя> pbr/owned/pbra/package/scripts/Ansible/install.yml

.pbr/bin/ansible-playbook -i inventory.yml -e common_rpm_dir_path=/home/ansible-user -e storage_service_rpm_path='/tmp/path/to/rpm' -u <имя плользователя> ppbr/owned/pbss/package/scripts/Ansible/install.yml

Проверка результата

Для проверки установки и работоспособности компонентов CopyWala обратитесь к разделу Чек-лист проверки корректности работы.