Автоматизированная установка (с помощью Ansible)
Перед началом установки убедитесь, что выполнена подготовка окружения.
Порядок установки
Для автоматической установки CopyWala(PBR) с использованием Ansible выполните следующие этапы:
-
Автоматизированная установка с помощью Ansible (обязательный шаг):
-
Настройка интеграции Platform V CopyWala с внешними сервисами.
Распаковка дистрибутива CopyWala (обязательный шаг)
Последовательность действий
-
Создайте директорию с дистрибутивом CopyWala (например, в каталоге
/tmp):mkdir distrib -
Поместите дистрибутив 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/ -
Перейдите в директорию
distribCopyWala:cd /путь к директории/distrib/ -
Создайте директории для распаковки архива:
mkdir -p pbr/owned/dbbr/dbbr_bin
mkdir -p pbr/owned/pbra/pbra_bin
mkdir -p pbr/owned/pbss/pbss_bin -
Распакуйте архив для установки:
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. Создание виртуальной среды позволяет избежать конфликтов с уже предустановленными пакетами и не затрагивать существующую среду на текущей машине. Для подготовки виртуального окружения выполните следующие шаги:
-
Создайте виртуальное окружение. Рекомендуется использовать Python 3.9:
python3 -m venv .pbr -
Активируйте виртуальное окружение:
source .pbr/bin/activate -
Установите необходимые пакеты:
pip install 'ansible==8.7.0'
После завершения работы виртуальную среду можно отключить. Выполните консольную команду: deactivate.
Проверка результата
Проверьте, что установка Ansible прошла успешно: ansible --version. В результате вывод не должен содержать ошибок.
Команда pip list должна вывести зависимости:
ansible 8.7.0
ansible-core 2.15.13
Генерация сертификатов (обязательный шаг)
Для работы компонентов CopyWala с TLS-шифрованием необходимо сгенерировать сертификаты. Более подробный процесс описан в роли certs.
Последовательность действий
-
Определение переменных для компонента
PBRA:-
Перейдите в директорию со скриптами установки:
cd pbr/owned/pbra/package/scripts/Ansible -
На основе файла
inventory_example.ymlукажите адрес ВМ, на которые необходимо установить компоненты.Установка компонентов на узлы происходит в соответствии со следующей таблицей:
-
Группа в inventory-файле | Компоненты |
|---|---|
pbra | Copywala |
Пример inventory-файла:
pbra:
hosts:
pbra-host:
ansible_host: <IP_ADDRESS>
-
Укажите необходимые значения переменных для каждой из роли. Это можно сделать в созданном inventory-файле, плейбуке (install.yml) или в отдельном файле с переменными. Пример плейбука представлен в файле
playbook_example.yml. Ниже представлен перечень Ansible ролей для инсталляции CopyWala: таблицы со всеми переменными этих ролей, их значениями по умолчанию и описанием. -
Определение переменных для компонента
DBBR:-
Перейдите в директорию со скриптами установки:
cd pbr/owned/dbbr/package/scripts/Ansible -
На основе файла
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>
-
Укажите необходимые значения переменных для каждой из роли. Это можно сделать в созданном inventory-файле, плейбуке (install.yml) или в отдельном файле с переменными. Пример плейбука представлен в файле
playbook_example.yml. Ниже представлен перечень Ansible ролей для инсталляции CopyWala: таблицы со всеми переменными этих ролей, их значениями по умолчанию и описанием. -
Определение переменных для компонента
PBSS:-
Перейдите в директорию со скриптами установки:
cd pbr/owned/pbss/package/scripts/Ansible -
На основе файла
inventory_example.ymlукажите адрес ВМ, на которые необходимо установить компоненты.Установка компонентов на узлы происходит в соответствии со следующей таблицей:
-
Группа в inventory-файле | Компоненты |
|---|---|
storage_service | Storage Service |
- Укажите необходимые значения переменных для каждой из роли. Это можно сделать в созданном inventory-файле, плейбуке (install.yml) или в отдельном файле с переменными. Пример плейбука представлен в файле
playbook_example.yml. Ниже представлен перечень Ansible ролей для инсталляции CopyWala: таблицы со всеми переменными этих ролей, их значениями по умолчанию и описанием.
Перед запуском ознакомьтесь со всеми переменными.
Роль agent-manager
Роль предназначена для установки Agent Manager. Роль берет нужный rpm-файл для установки из переменной agent_manager_rpm_path, копирует его на целевой узел, производит установку, настройку и запуск Agent Manager. Значение переменной agent_manager_rpm_path можно задать вручную или воспользоваться ролью common.
Ниже приведено описание переменных роли и их значения по умолчанию:
Название переменной | Описание | Значение по умолчанию |
|---|---|---|
| Путь к rpm-файлу установщика компонента Agent Manager. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования. |
|
| Пользователь для запуска службы Agent Manager |
|
| Директория с конфигурационным файлом компонента Agent Manager |
|
| Имя конфигурационного файла компонента Agent Manager | agent-manager.yaml |
| Словарь, описывающий настройку веб-сервера APIAgent Manager. Обязательный параметр. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий настройку веб сокета Agent Manager. Обязательный параметр. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры подключения к OpenID провайдеру. Обязательный параметр. Содержит ключ: |
|
| Создание служебной базы данных (далее БД). Параметры БД (название, владелец) необходимо взять из переменной |
|
| Администратор баз данных для создания служебной базы данных |
|
| Пароль администратора баз данных для создания служебной базы данных |
|
| Словарь, описывающий параметры служебной БД. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий настройки выпуска токенов доступа для агентских приложений. Обязательный параметр. Если в словаре отсутствуют параметры |
|
| Словарь, описывающий параметры подключения к HarhiCorp/SecMan. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий глобальные параметры TLS. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры логирования. Обязательный параметр. Содержит следующие ключи:<br /> |
|
Роль api-gateway
Роль предназначена для генерации конфигурационного файла прокси-сервера SynGX, выполняющего функции API gateway, а также включает операции по копированию нужных сертификатов и последующему запуску прокси-сервера. Для установки необходимо указать путь к RPM SynGX - api_gateway_rpm_path.
Ниже приведено описание переменных роли и их значения по умолчанию:
Название переменной | Описание | Значение по умолчанию |
|---|---|---|
| Путь к rpm-файлу установщика Syngx. Обязательный параметр (не должен быть пустым) |
|
| Пользователь Syngx |
|
| Адрес, на который направляются запросы для последующей обработки Syngx |
|
| Директория для конфигурационного файла |
|
| Порт, на котором будет доступна служебная информация |
|
| Порт, на котором Syngx будет принимать входящие запросы |
|
| IP-адрес, на котором доступен Agent Manager |
|
| Порт, на котором доступен API Agent Manager |
|
| Порт, на котором доступен WebSocket Agent Manager |
|
| Использование tls-шифрования для подключения к Agent Manager |
|
| Использование взаимной аутентификации с помощью сертификатов для подключения к Agent Manager |
|
| IP-адрес, на котором доступен Storage Service |
|
| Порт, на котором доступен Storage Service |
|
| Использование tls-шифрования для подключения к Storage Service |
|
| Использование взаимной аутентификации с помощью сертификатов для подключения к Storage Service |
|
| IP-адрес, на котором доступен Task Manager |
|
| Порт, на котором доступен Task Manager |
|
| Использование tls-шифрования для подключения к Task Manager |
|
| Использование взаимной аутентификации с помощью сертификатов для подключения к Task Manager |
|
| Путь к сертификату, с помощью которого производится проверка валидности сертификатов у компонентов Copywala при перенаправлении запросов |
|
| Путь к сертификату, с помощью которого производится проверка валидности сертификатов у клиентских машин при перенаправлении запросов |
|
| Словарь, указывающий пути к сертификатам Syngx. Содержит следующие ключи:<br /> |
|
Роль copywala
Роль предназначена для установки copywala. Роль берет нужный rpm-файл для установки из переменной copywala_rpm_path, копирует его на целевой узел, производит установку и настройку. Значение переменной copywala_rpm_path можно задать вручную или воспользоваться ролью common.
Ниже приведено описание переменных роли и их значения по умолчанию:
Название переменной | Описание | Значение по умолчанию |
|---|---|---|
| Путь к rpm-файлу установщика компонента CopyWala. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования |
|
| Директория с конфигурационным файлом компонента CopyWala |
|
| Имя конфигурационного файла компонента CopyWala |
|
| Администратор баз данных для создания служебной базы данных |
|
| Пароль администратора баз данных для создания служебной базы данных |
|
| Словарь, описывающий параметры конфигурации целевой базы данных. Содержит следующие ключи:<br /> |
|
| Пользователь Copywala |
|
| Словарь, описывающий параметры целевой БД. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры служебной БД. Обязательный параметр. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий глобальные параметры TLS. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры архива. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры политику резервного копирования. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры логирования copywala. Обязательный параметр. Содержит следующие ключи:<br /> |
|
Роль pbr-agent
Роль предназначена для установки pbr-agent. Роль берет нужный rpm-файл для установки из переменной pbr_agent_rpm_path, копирует его на целевой узел, производит установку и настройку. Значение переменной pbr_agent_rpm_path можно задать вручную или воспользоваться ролью common.
Ниже приведено описание переменных роли и их значения по умолчанию:
Название переменной | Описание | Значение по умолчанию |
|---|---|---|
| Путь к rpm-файлу установщика компонента pbr-agent. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования |
|
| Директория с конфигурационным файлом компонента pbr-agent |
|
| Имя конфигурационного файла компонента pbr-agent |
|
| Создание служебной базы данных (далее БД) |
|
| Администратор баз данных для создания служебной базы данных |
|
| Пароль администратора баз данных для создания служебной базы данных |
|
| Словарь, описывающий параметры служебной БД. Обязательный параметр. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий настройку веб-сервера API API-gateway. Содержит следующие ключи:<br /> |
|
| Интервал между запросами PBR-Agent к Copywala для проверки работоспособности |
|
| Словарь, описывающий настройку Copywala. Содержит ключ: |
|
| Словарь, описывающий PBR-Agent параметры TLS. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры подключения к HarhiCorp/SecMan. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры логирования copywala. Обязательный параметр. Содержит следующие ключи:<br /> |
|
Роль certs
Роль предназначена для генерации самоподписанных CA и сертификатов для Agent Manager, API-gateway, Copywala, PBR-Agent, Recovery Manager, Storage Service, Storage Manager и Task Manager.
Пример файла componentMap.yml с добавленным параметров san:
- Перейдите в директорию с ролью
cd pbr/owned/dbbr/package/scripts/Ansible(роль также дублируется в архивеpbraиpbss). - Создайте inventory-файл для генерации сертификатов, например
inventory-cert.yml. Пример inventory-файла для генерации сертификатов, в котором нужно указать IP-адрес ВМ, на которой будут генерироваться сертификаты:
cert:
hosts:
cert-host:
ansible_host: <IP адрес>
- Создайте плейбук-файл для генерации сертификатов, например
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>
- Запустите генерацию сертификатов:
ansible-playbook -i inventory-cert.yml playbook-cert.yml
Роль генерирует сертификаты на удаленном узле, создает архив и скачивает его на Ansible узел.
Ниже приведено описание переменных роли и их значения по умолчанию:
Название переменной | Описание | Значение по умолчанию |
|---|---|---|
| Словарь с переменными для выполнения роли |
|
| Путь к файлу с переменными |
|
| Директория для временного сохранения сертификатов на удаленном узле |
|
| Формат архива с сертификатами |
|
| Директория для сохранения сертификатов на Ansible узле |
|
| Путь к корневому сертификату. Если передать пустую строку, будет сгенерирован новый | `` |
| Путь к ключу корневого сертификата. Необходим для генерации сертификатов для компонентов Copywala | `` |
| Код страны регистрации организации |
|
| Область, регион регистрации организации |
|
| Организация, для которой выпускается сертификат |
|
| Почта администратора организации |
|
| Доменное имя, для которого заказывается сертификат |
|
Роль 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.
Ниже приведено описание переменных роли и их значения по умолчанию:
Название переменной | Описание | Значение по умолчанию |
|---|---|---|
| Путь к директории с rpm-файлами CopyWala |
|
Роль recovery-manager
Роль предназначена для установки Recovery Manager. Роль берет нужный rpm-файл для установки из переменной recovery_manager_rpm_path, копирует его на целевой узел и производит установку. Значение переменной recovery_manager_rpm_path можно задать вручную или воспользоваться ролью common.
Ниже приведено описание переменных роли и их значения по умолчанию:
Название переменной | Описание | Значение по умолчанию |
|---|---|---|
| Путь к rpm-файлу установщика Recovery Manager. Обязательный параметр (не должен быть пустым) |
|
| Пользователь, который будет работать с Recovery Manager |
|
| Директория для размещения файлов Recovery Manager |
|
| Путь к CA сертификату OpenID провайдера на Ansible узле |
|
| Путь к CA сертификату API Gateway на Ansible узле |
|
Роль storage-service
Роль предназначена для установки storage-service. Роль берет нужный rpm-файл для установки из переменной storage_service_rpm_path, копирует его на целевой узел, производит установку и настройку. Значение переменной storage_service_rpm_path можно задать вручную или воспользоваться ролью common.
Ниже приведено описание переменных роли и их значения по умолчанию:
Название переменной | Описание | Значение по умолчанию |
|---|---|---|
| Путь к rpm-файлу установщика компонента Storage Service. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования. |
|
| Пользователь для запуска службы Storage Service |
|
| Директория с конфигурационным файлом компонента Agent Manager |
|
| Имя конфигурационного файла с компонентом Storage Service |
|
| Словарь, описывающий настройку веб-сервера API Storage Service. Обязательный параметр. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий настройку GRPC. Обязательный параметр |
|
| Словарь, описывающий параметры сервиса. Обязательный параметр. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий Storage Service параметры TLS. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры логирования. Обязательный параметр. Содержит следующие ключи:<br /> |
|
Роль task-manager
Роль предназначена для установки Task Manager. Роль берет нужный rpm-файл для установки из переменной task_manager_rpm_path, копирует его на целевой узел, производит установку, настройки и запуск Task Manager. Значение переменной task_manager_rpm_path можно задать вручную или воспользоваться ролью common.
Ниже приведено описание переменных роли и их значения по умолчанию:
Название переменной | Описание | Значение по умолчанию |
|---|---|---|
| Путь к rpm-файлу установщика компонента Task Manager. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования. |
|
| Пользователь для запуска службы |
|
| Директория с конфигурационным файлом компонента Task Manager |
|
| Имя конфигурационного файла компонента Task Manager |
|
| Словарь, описывающий настройку веб-сервера API Task Manager. Обязательный параметр. Содержит ключ: |
|
| Словарь, указывающий пути к сертификатам Task Manager на Ansible узле. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий настройку Agent Manager. Обязательный параметр. Содержит ключ: |
|
| Словарь, описывающий параметры подключения к OpenID провайдеру. Обязательный параметр. Содержит ключ: |
|
| Создание служебной базы данных (далее БД) |
|
| Администратор баз данных для создания служебной базы данных |
|
| Пароль администратора баз данных для создания служебной базы данных |
|
| Словарь, описывающий параметры служебной БД. Обязательный параметр. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий настройки выпуска токенов доступа для агентских приложений. Обязательный параметр. Если в словаре отсутствуют параметры |
|
| Словарь, описывающий параметры логирования. Обязательный параметр. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры подключения к HarhiCorp/SecMan. Содержит следующие ключи:<br /> |
|
Роль storage-manager
Роль предназначена для установки storage-manager. Роль берет нужный rpm-файл для установки из переменной storage_manager_rpm_path, копирует его на целевой узел, производит установку, настройки и запуск Storage Manager. Значение переменной storage_manager_rpm_path можно задать вручную или воспользоваться ролью common.
Ниже приведено описание переменных роли и их значения по умолчанию:
Название переменной | Описание | Значение по умолчанию |
|---|---|---|
| Путь к rpm-файлу установщика компонента storage-manager. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования. |
|
| Пользователь для запуска службы |
|
| Директория с конфигурационным файлом компонента storage-manager |
|
| Имя конфигурационного файла компонента storage-manager |
|
| Словарь, описывающий настройку веб-сервера API storage-manager. Обязательный параметр. Содержит следующие ключи:<br /> |
|
| Создание служебной базы данных (далее БД) |
|
| Администратор баз данных для создания служебной базы данных |
|
| Пароль администратора баз данных для создания служебной базы данных |
|
| Словарь, описывающий параметры служебной БД. Обязательный параметр. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий настройки выпуска токенов доступа для агентских приложений. Обязательный параметр. Если в словаре отсутствуют параметры |
|
| Словарь, описывающий параметры подключения к HarhiCorp/SecMan. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры подключения к OpenID провайдеру. Обязательный параметр. Содержит ключ: |
|
| Словарь, указывающий пути к сертификатам storage-manager на Ansible узле. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры логирования. Обязательный параметр. Содержит следующие ключи:<br /> |
|
Роль pbr-agent
Роль предназначена для установки pbr-agent. Роль берет нужный rpm-файл для установки из переменной pbr_agent_rpm_path, копирует его на целевой узел, производит установку, настройки и запуск PBR-Agent. Значение переменной pbr_agent_rpm_path можно задать вручную или воспользоваться ролью common.
Ниже приведено описание переменных роли и их значения по умолчанию:
Название переменной | Описание | Значение по умолчанию |
|---|---|---|
| Путь к rpm-файлу установщика компонента pbr-agent. Используется, когда требуется установка из отдельного файла, не идущего в архиве с продуктом, например для тестирования |
|
| Директория с конфигурационным файлом компонента pbr-agent |
|
| Имя конфигурационного файла компонента pbr-agent |
|
| Создание служебной базы данных (далее БД) |
|
| Администратор баз данных для создания служебной базы данных |
|
| Пароль администратора баз данных для создания служебной базы данных |
|
| Словарь, описывающий параметры служебной БД. Обязательный параметр. На основе этих параметров будет создан пользователь (владелец БД) и сама БД. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий настройку веб-сервера API API-gateway. Содержит следующие ключи:<br /> |
|
| Интервал между запросами PBR-Agent к Copywala для проверки работоспособности |
|
| Словарь, описывающий настройку Copywala. Содержит ключ: |
|
| Словарь, описывающий PBR-Agent параметры TLS. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры подключения к HarhiCorp/SecMan. Содержит следующие ключи:<br /> |
|
| Словарь, описывающий параметры логирования copywala. Обязательный параметр. Содержит следующие ключи:<br /> |
|
Запуск автоматизированной установки (обязательный шаг)
Последовательность действий
- Перед запуском установки обновите (или установите) 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
-
Выполните команды для установки.
Примеры команды:
# Все переменные указаны в 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 обратитесь к разделу Проверка работоспособности.
Пример автоматизированной установки
Последовательность действий
- Скачивайте дистрибутив в
/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
- Для защищенной передачи данных между компонентами 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
- Для запуска ролей и установки компонентов CopyWala необходимо дополнить файлы
inventory_example.ymlиplaybook_example.ymlпеременными для узлов. Переменные также можно записать вgroup_vars/pbra,group_vars/dbbr,group_vars/recovery,group_vars/storage_service.
Примеры файлов
- inventory-файла для
PBRA: group_vars/pbra:- inventory-файла для
DBBR: group_vars/dbbr:group_vars/recovery:group_vars/storage_service:group_vars/storage_manager:
pbra:
hosts:
pbra-host:
ansible_host: {IP_ADDRESS}
copywala_config_params:
backup_destination_uri: local-fs:///home/postgres/backups/
restore_data_path: local-fs:///pgdata/05/restored_data
copywala_admin_db_user: postgres
copywala_admin_db_password: postgres
copywala_target_db:
host: {IP_ADDRESS}
port: 5433
user: <postgres>
password: Password
database: postgres
query_params: search_path=public
copywala_pbra_db:
host: {IP_ADDRESS}
port: 5433
user: <pbra>
password: Password
database: pbra
query_params: search_path=public
copywala_archive_settings:
archive_type: tar
upload_params:
chunk_size: 4MB
chunks_queue_size: 16
copywala_backup_policy:
strategy: pbr.policy.backup.strategy.full
fast_checkpoint: false
workers_no: 1
progress_latency: 0.025
use_direct_io: false
copywala_log:
path: /opt/pangolin-copywala/pangolin-copywala.log
max_size: 100
max_age: 90
max_backups: 10
use_local_time: true
compress_backups: false
copywala_agent_log:
path: /var/log/pbr/pbr-agent.log
max_size: 100
max_age: 90
max_backups: 10
use_local_time: true
compress_backups: false
copywala_agent_api_gateway:
http_address: https://{IP_ADDRESS}:29000
ws_address: wss://{IP_ADDRESS}:29000
copywala_tls:
rootca:
local_path: tmp/certificates/rootCA.crt
key:
local_path: tmp/certificates/copywala.key
cert:
local_path: tmp/certificates/copywala.crt
copywala_agent_tls:
rootca:
local_path: tmp/certificates/rootCA.crt
key:
local_path: tmp/certificates/pbr-agent.key
cert:
local_path: tmp/certificates/pbr-agent.crt
dbbr:
hosts:
dbbr-host:
ansible_host: {IP_ADDRESS}
recovery:
hosts:
recovery-host:
ansible_host: {IP_ADDRESS}
storage_service:
hosts:
storage_host:
ansible_host: {IP_ADDRESS}
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: https://keycloak.host/realms/realm-name
tls:
rootca:
vault_path: certs/rootCA
vault_key: cert
agent_manager_admin_db_password: Password
agent_manager_db:
user: <pbr_agent_manager>
password: Password
host: {IP_ADDRESS}
port: 5433
database: pbr_agent_manager
query_params: search_path=public
agent_manager_auth:
access_token_life_time: 15m
refresh_token_life_time: 72h
registration_token_life_time: 24h
public_key:
vault_path: agent-manager
vault_key: public_key
private_key:
vault_path: agent-manager
vault_key: private_key
agent_manager_vault:
server: <vault-url>
namespace: <namespace>
path: <mount-path>
approle:
auth_method_path: approle
role_id: <role-id>
secret_id: <secret-id>
agent_manager_log:
path: /var/log/pbr/agent-manager.log
max_size: 10
max_age: 14
max_backups: 14
use_local_time: true
compress_backups: false
api_gateway_rpm_path: path/to/rpm/syngx.rpm
api_gateway_server_name: dbbr.local {IP_ADDRESS}
api_gateway_admin_port: 29001
api_gateway_port: 29000
api_gateway_agent_manager_ip: {IP_ADDRESS}
api_gateway_agent_manager_port: 29010
api_gateway_agent_manager_ws_port: 29015
api_gateway_agent_manager_mtls: true
api_gateway_storage_service_ip: {IP_ADDRESS}
api_gateway_storage_service_port: 29500
api_gateway_storage_service_grpc_port: 29509
api_gateway_storage_service_mtls: true
api_gateway_task_manager_ip: {IP_ADDRESS}
api_gateway_task_manager_port: 29020
api_gateway_task_manager_mtls: true
task_manager_api_server:
address: 0.0.0.0:29020
mtls: false
task_manager_websocket:
address: 0.0.0.0:29025
mtls: false
task_manager_agent_manager:
http_address: https://{IP_ADDRESS}:29000
task_manager_open_id:
realm_url: <vault-url>
tls:
rootca:
vault_path: certs/rootCA
vault_key: cert
task_manager_admin_db_password: Password
task_manager_db:
user: <pbr_task_manager>
password: Password
host: {IP_ADDRESS}
port: 5433
database: pbr_task_manager
query_params: search_path=public
task_manager_auth:
public_key:
vault_path: agent-manager
vault_key: public_key
task_manager_vault:
server: <vault-url>
namespace: <namespace>
path: <mount-path>
approle:
auth_method_path: approle
role_id: <role-id>
secret_id: <secret-id>
task_manager_log:
path: /var/log/pbr/task-manager.log
max_size: 10
max_age: 14
max_backups: 14
use_local_time: true
compress_backups: false
agent_manager_tls:
rootca:
local_path: tmp/certificates/rootCA.crt
key:
local_path: tmp/certificates/agent-manager.key
cert:
local_path: tmp/certificates/agent-manager.crt
api_gateway_upstream_rootca: tmp/certificates/rootCA.crt
api_gateway_downstream_rootca: tmp/certificates/rootCA.crt
api_gateway_tls:
key: tmp/certificates/api-gateway.key
cert: tmp/certificates/api-gateway.crt
task_manager_tls:
rootca:
local_path: tmp/certificates/rootCA.crt
key:
local_path: tmp/certificates/task-manager.key
cert:
local_path: tmp/certificates/task-manager.crt
recovery_manager_user: user
recovery_manager_open_id_rootca: /tmp/certificates/cert
recovery_manager_ag_rootca: /tmp/certificates/rootCA.crt
storage_service_api_server:
address: 0.0.0.0:29500
mtls: true
tls:
rootca:
local_path: /tmp/certificates/rootCA.crt
key:
local_path: /tmp/certificates/storage-service.key
cert:
local_path: /tmp/certificates/storage-service.crt
storage_service_grpc:
address: 0.0.0.0:29509
mtls: true
tls:
rootca:
local_path: /tmp/certificates/rootCA.crt
key:
local_path: /tmp/certificates/storage-service.key
cert:
local_path: /tmp/certificates/storage-service.crt
storage_service_common:
storage_path: /var/pbr/backups
storage_service_log:
path: /var/log/pbr/storage-service.log
max_size: 10
max_age: 14
max_backups: 14
use_local_time: true
compress_backups: false
storage_manager_api_server:
address: '0.0.0.0:29030'
mtls: false
storage_manager_admin_db_password: postgres
storage_manager_db:
user: <storage_manager>
password: Password
host: {IP_ADDRESS}
port: 5433
database: 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'
public_key:
vault_path: 'vault/path/agent-manager'
vault_key: 'public_key'
private_key:
vault_path: 'vault/path/agent-manager'
vault_key: 'private_key'
storage_manager_vault:
server: <vault-url>
namespace: <namespace>
path: <mount-path>
approle:
auth_method_path: approle
role_id: <role-id>
secret_id: <secret-id>
task_manager_open_id:
realm_url: <vault-url>
tls:
rootca:
vault_path: certs/rootCA
vault_key: cert
storage_manager_log:
path: '/var/log/pbr/storage-manager.log'
max_size: 10
max_age: 14
max_backups: 14
use_local_time: true
compress_backups: false
- Для установки компонентов выполните команды:
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 обратитесь к разделу Чек-лист проверки корректности работы.