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

Автоматизированная установка компонента PBRA

примечание

Компонент PBRA включает следующие модули:

Модуль

Описание

Copywala

Выполняет создание резервных копий и восстановление данных из резервных копий PostgreSQL-совместимых баз данных

PBR-Agent

Агентское приложение, предназначенное для запуска процессов резервного копирования и восстановления данных, а также для обеспечения взаимодействия с инфраструктурой продукта CopyWala

Настоящая инструкция предназначена для автоматизированной установки компонента целиком. Если требуется установить только определенный модуль – воспользуйтесь инструкцией на этот модуль (перейдите по ссылке в таблице выше).

Предусловия​

Перед началом установки убедитесь, что выполнены следующие условия:

  1. Подготовлено окружение.
  2. Дистрибутив CopyWala распакован в соответствии с инструкцией, приведенной в разделе Установка, шаг Распаковка дистрибутива CopyWala.

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

Выполните шаги в следующем порядке:

  1. Подготовка среды Ansible.
  2. Установка Ansible-коллекций.
  3. Генерация TLS-сертификатов.
  4. Подготовка inventory-файла и переменных ролей.
  5. Запуск установки.

Подготовка среды Ansible​

Рекомендуется запускать установку модуля Copywala в виртуальной среде Python.

к сведению

Данный шаг выполняется на управляющем узле Ansible (control node) — машине, с которой запускаются Ansible-плейбуки.

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

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

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

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

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

    ansible 8.7.0
    ansible-core 2.15.13
к сведению

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

Установка Ansible-коллекций​

к сведению

Данный шаг выполняется на управляющем узле Ansible (control node) — машине, с которой запускаются Ansible-плейбуки.

Установите или обновите Ansible-коллекции с помощью ansible-galaxy. Необходимые зависимости:

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

Версия

Установка

sbt-pbr (поставляется в составе дистрибутива продукта CopyWala)

1.0.0

Перейдите в директорию с распакованным дистрибутивом любого компонента CopyWala и запустите команду:

ansible-galaxy collection install package/scripts/Ansible/collections/sbt-pbr-1.0.0.tar.gz

Community.Postgresql (устанавливается из внешнего репозитория Ansible Galaxy)

3.9.1

ansible-galaxy collection install community.postgresql:3.9.1

Community.Library_Inventory_Filtering_V1 (устанавливается из внешнего репозитория Ansible Galaxy)

1.0.2

ansible-galaxy collection install community.library_inventory_filtering_v1:1.0.2

Генерация TLS-сертификатов​

Сгенерируйте TLS-сертификаты, необходимые для работы модуля Copywala с шифрованием.

Для генерации используйте Ansible-роль certs. Работа с ролью описана в дополнительной документации для автоматизированного варианта установки (с помощью Ansible) в разделе Генерация сертификатов с помощью Ansible-роли certs.

Подготовка inventory-файла и переменных ролей​

  1. Перейдите в директорию со скриптами установки. Например, если дистрибутив был распакован в /path_to_dir/distrib/:

    cd /path_to_dir/distrib/pbr/owned/pbra/package/scripts/Ansible
  2. Создайте inventory-файл на основе inventory_example.yml и в секции pbra.hosts укажите IP-адреса узлов, на которые необходимо установить модуль PBRA.

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

    pbra:
    hosts:
    pbra-host1:
    ansible_host: "<pbra_ip_address>"

    Подсказка

    Если PBRA необходимо установить на несколько хостов, добавьте дополнительные секции в inventory-файл по примеру ниже:

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

    pbra:
    hosts:
    pbra-host1:
    ansible_host: "<pbra_ip_address_1>"

    pbra-host2:
    ansible_host: "<pbra_ip_address_2>"

    # КОД ПРОПУЩЕН: секции с IP-адресами остальных хостов

  3. Задайте переменные ролей copywala и pbr_agent.

    к сведению

    Роли copywala и pbr_agent выполняют установку и настройку copywala и pbr-agent соответственно. Они используют RPM-пакеты, путь к которым задается в переменных copywala_package_path и pbr_agent_package_path. Пакеты копируются на целевой узел, после чего выполняется их установка.

    Пути к RPM-пакетам можно задать вручную или определить автоматически с помощью роли common.

    Задайте переменные, у которых в таблицах ниже в столбце «Обязательность заполнения» – Да, а также при необходимости задайте другие (не обязательные) переменные.

    примечание
    • Если переменная не задана явно в плейбуке, для нее используется значение по умолчанию, определенное в файле defaults/main.yml роли.

    • Из необязательных переменных рекомендуется заполнять секцию *_tls, где * — это префикс с именем модуля. Например, для Storage Manager секция будет выглядеть так:

      storage_manager_tls:
      rootca:
      local_path: /path/to/certs/certificates/rootCA.crt
      cert:
      local_path: /path/to/certs/certificates/storage-manager.crt
      key:
      local_path: /path/to/certs/certificates/storage-manager.key
Переменные Ansible-роли copywala

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

Описание

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

Обязательность заполнения

copywala_package_path

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

''

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

copywala_target_db

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

{}

Да

copywala_log

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

{}

Да

copywala_admin_db_user

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

Не задано

Да

copywala_admin_db_password

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

Не задано

Да

copywala_backup_destination_uri

Хранилище резервных копий, например, local-fs:///home/postgres/backups/

Не задано

Да

copywala_config_dir

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

/etc/pbr

Нет

copywala_config_file

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

copywala.yaml

Нет

copywala_agent_config_file

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

pbr-agent.yaml

Нет

copywala_config_params

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

{}

Нет

copywala_user

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

postgres

Нет

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_agent_api_gateway

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

{}

Нет

copywala_agent_heartbeat_delay

Интервал между запросами heartbeat

10s

Нет

copywala_agent

Словарь, описывающий параметры агента Copywala

{}

Нет

copywala_agent_tls

Словарь, описывающий параметры TLS для агента Copywala

{}

Нет

copywala_agent_log

Словарь, описывающий параметры логирования агента Copywala

{}

Нет

::::

Переменные Ansible-роли pbr_agent

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

Описание

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

Обязательность заполнения

pbr_agent_package_path

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

''

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

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 – HTTP(S)-адрес API-шлюза (agent-manager) для REST-запросов: получение задач, отправка результатов, heartbeat-сообщений;<br />ws_address – WebSocket-адрес API-шлюза (agent-manager) для двустороннего обмена сообщениями

{}

Да

pbr_agent_log

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

{}

Да

pbr_agent_admin_db_user

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

Не задано

Да

pbr_agent_admin_db_password

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

Не задано

Да

pbr_agent_config_dir

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

/etc/pbr

Нет

pbr_agent_config_file

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

pbr-agent.yaml

Нет

pbr_agent_user

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

postgres

Нет

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

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

{}

Нет

:::::

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

Пример заполнения

pbra:
hosts:
pbra-host:
ansible_host: "<pbra_ip_address>"
# Переменные роли copywala
copywala_target_db:
host: 127.0.0.1
port: 5433
user: "<postgres>"
password: "<some_password>"
database: postgres
query_params: search_path=pbr
copywala_log:
path: /var/log/pbr/copywala.log

# КОД ПРОПУЩЕН: другие переменные роли copywala

# Переменные роли pbr_agent
pbr_agent_db:
host: 127.0.0.1
port: 5433
user: "<postgres>"
password: "<some_password>"
database: postgres
query_params: search_path=pbr
pbr_agent_api_gateway:
http_address: https://<agent-manager-host>:<port>:29010
ws_address: wss://<agent-manager-host>:<port>:29015
pbr_agent_log:
path: /var/log/pbr/pbr-agent.log

# КОД ПРОПУЩЕН: другие переменные роли pbr_agent

Запуск установки​

примечание

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

Для установки компонента PBRA выполните команды:

  • Если переменные заданы в inventory-файле или в разделе vars плейбука install.yml:

    cd pbr/owned/pbra/package/scripts/Ansible
    ansible-playbook -i inventory.yml install.yml
  • Если переменные вынесены в отдельный файл group_vars/pbra.yml, запустите плейбук из директории, в которой находятся inventory.yml и папка group_vars:

    cd pbr/owned/pbra/package/scripts/Ansible
    ansible-playbook -i inventory.yml install.yml
  • Если часть переменных не задана ни в одном из файлов, их можно передать через командную строку с помощью флага -e, например:

    ansible-playbook -i pbr/owned/pbra/package/scripts/Ansible/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

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

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