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

Описание параметров конфигурационных файлов

Параметры Copywala (файл copywala.yaml)​

# --------------------------------------
# Настройка подключения к целевой БД
# --------------------------------------
target_db:
host: localhost
port: 5433
user: {username}
password: password
database: postgres
# опция получения секретов подключения к БД через утилиту pg_auth_config
is_pg_auth_config_enabled: false # параметр позволяет применять аутентификацию пользователей при помощи pg_auth_config # если значение выставлено true, то в данном разделе параметр password указывать не нужно
pg_auth_config_plugins_path: /usr/lib/pbr/copywala # путь к каталогу, содержащему плагины аутентификации
vault_database_engine_static_role: # имя статической роли в хранилище секретов для получения доступов к БД. Значение пустое по умолчанию
query_params: search_path=pbr # параметр позволяет настроить набор значений, специфичных для Pangolin/PostgreSQL, при подключении к базе данных
# по умолчанию применяется глобальный tls
tls:
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Возможность загрузки TLS-сертификатов из HashiCorp Vault / Secret Management System (SecMan)
# --------------------------------------
vault: # настройки подключения
server: "<vault-url>"
namespace: "<namespace>"
path: "<mount-path>" # путь к точке монтирования хранилища секретов
kv_version: v2 # версия формата KV-хранилища
approle:
role_id: <role-id> # уникальный идентификатор роли
secret_id: <secret-id> # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path
# auth_method: approle # метод аутентификации
# wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token
# wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)

# --------------------------------------
# Параметры подключения к KMS HashiCorp Vault
# --------------------------------------
kms:
server: "<vault-url>" # URL сервера KMS
namespace: "<namespace>" # пространство имен в KMS HashiCorp Vault
path: "<mount-path>" # путь к точке монтирования хранилища секретов
kv_version: v2 # версия формата KV-хранилища
approle: # авторизация в KMS по роли и ключа роли
role_id: "<role-id>" # уникальный идентификатор роли
secret_id: "<secret-id>" # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path
# auth_method: approle # метод аутентификации
# wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token
# wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)
userpass: # авторизация в KMS по логину и паролю
# username:
# password:
# auth_method:

# --------------------------------------
# Настройки БД для хранения информации о выполненных задачах резервного копирования и восстановления данных
# --------------------------------------
pbra_db:
host: localhost
port: 5433
user: {username}
password: password
database: postgres
is_pg_auth_config_enabled: false # параметр позволяет применять аутентификацию пользователей при помощи pg_auth_config # если значение выставлено true, то в данном разделе параметр password указывать не нужно
vault_database_engine_static_role: # имя статической роли в хранилище секретов для получения доступов к БД. Значение пустое по умолчанию
query_params: search_path=pbr # параметр позволяет настроить набор значений, специфичных для Pangolin/PostgreSQL, при подключении к базе данных
tls:
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Назначение резервной копии (обязательный параметр без restore_data_path)
# --------------------------------------
# local-fs:///home/postgres/backups/
# ddboost://srv-10-15.host/storage-unit
# s3://srv-10-20.host/bucket-08-9992
# s2://srv-10-25.host:port
backup_destination_uri: local-fs:///home/postgres/backups/

# --------------------------------------
# Назначение директории для архивирования WAL-файлов
# --------------------------------------
# local-fs:///home/postgres/backups/wals/
# s3://srv-10-20.host/wals-bucket/
# s2://srv-10-25.host:port/wals/
wal_destination_uri: local-fs:///home/postgres/backups/wals/

# --------------------------------------
# Секция параметров multi-restore (механизм восстановления WAL-файлов из нескольких хранилищ)
# --------------------------------------
wal_restore:
multi_restore_wal_uris: ["s2://srv-10-25.host:29509/path1", "s2://srv-10-26.host:29509/path2"] # список хранилищ WAL-файлов. Значение параметра формируется автоматически при вызове copywala restore-wal prepare-multi-restore
multi_restore_cache_path: /var/pbr/copywala/multi-restore.wals.cache # путь к кеш-файлу с информацией о хранилищах и диапазонах WAL-файлов, которые в них находятся

# --------------------------------------
# Директория для восстановления данных (обязательный параметр без backup_destination_uri)
# --------------------------------------
restore_data_path: local-fs:///pgdata/06/data

# --------------------------------------
# Наименование экземпляра БД для восстановления
# --------------------------------------
restore_instance_name: NAME_UUID # пример: db1_0198ad69-1a19-7b7f-9f46-f200942fd61c

# --------------------------------------
# Настройка повторных попыток при возникновении ошибок при записи РК
# --------------------------------------
retrier:
timeout: 10s # максимальное время выполнения запроса
retries: 5 # максимальное количество попыток
delay_period: 1s # период задержки

# --------------------------------------
# Размер WAL-файла (опционально, по умолчанию 16777216 (16MB))
# --------------------------------------
wal_segment_size: 16MB

# --------------------------------------
# Конфигурация S3
# --------------------------------------
s3:
region: ru-test # регион s3
access_id: <id> # идентификатор пользователя
secret_key: <key> # секретный ключ
use_path_style: false # если параметр имеет значение true, задействуется формат полного URL с указанием пути (path-style addressing); если false – название бакета включается непосредственно в доменное имя.
disable_request_checksums: false # проверка контрольных сумм запросов
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Конфигурация S2
# --------------------------------------
s2:
checksum_algorithm: DISABLED # выбор алгоритма вычисления контрольной суммы. Допустимые значения: DISABLED (по умолчанию), CRC32
storage_path: "" # значение по умолчанию пустое. Задается пользователем для возможности выбора одного из дополнительных хранилищ, пример: /var/pbr/s2/backups
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
s2tp_enabled: true # флаг использования протокола S2TP для взаимодействия copywala и storage service (s2). По умолчанию – true. Используется только в рамках операций передачи данных при создании и восстановлении резервных копий. gRPC остается как основной протокол для взаимодействия с S2, кроме переноса данных.
# при значении false – используется gRPC для всех взаимодействий
s2tp:
addresses: # массив адресов сервера s2
- "<host_1:port_1>"
- "<host_2:port_2>"
# ...
# Важно: порты, указанные в этом массиве должны совпадать с портам из storage-service.yaml блока s2.s2tp.addresses.
# Хосты, указанные в этом массиве должны совпадать со значением параметра backup_destination_uri файла copywala.yaml.
enable_tls: true # флаг использования TLS-протокола
max_connections: 16 # максимальное количество открытых соединений к серверу (на все указанные в массиве s2tp.addresses адреса)
read_timeout: 5m # таймаут для операции чтения
write_timeout: 5m # таймаут для операции записи
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Конфигурация DDBoost (Data Domain Boost)
# --------------------------------------
ddboost:
enc_creds_path: "<path-to-enc-creds-file>" # путь к учетным данным (защищенным преобразованием) для подключения к хранилищу DDBoost (заполняется опционально). При заданном значении параметры username и password в секции storage игнорируются
client_settings:
ddboost_lib_path: libDDBoost.so # путь к динамической библиотеке DDBoost (по умолчанию — libDDBoost.so). Если не задана переменная LD_LIBRARY_PATH или в ней отсутствует нужный путь, укажите здесь полный путь к файлу
read_client_side_decompress: false # флаг включения распаковки на стороне клиента. При значении false распаковка выполняется на стороне сервера. При значении true – на стороне клиента, что позволяет снизить нагрузку на сеть
client_type: 0 # тип клиента, который подключается к DDBoost. Для copywala значение менять не требуется
buffer_size: 0 # размер буфера ввода-вывода. 0 означает использование размер буфера по умолчанию
auto_create_storage_unit: true # автоматически создавать отдельное хранилище (storage_unit) в системе Data Domain для резервных копий, если оно еще не создано
storage:
username: "<username>" # имя пользователя для подключения к хранилищу DDBoost. Игнорируется если в copywala.yaml задан параметр enc_creds_path
password: "<password>" # пароль для подключения к хранилищу DDBoost. Игнорируется если в copywala.yaml задан параметр enc_creds_path
max_conns_no: 16 # максимальное количество одновременных соединений с DDBoost; соединения переиспользуются из пула, если они не простаивали дольше max_idle_time, иначе при необходимости создается новое соединение, если не превышен лимит max_conns_no
max_idle_time: 5m # допустимое время простоя соединения, после которого неактивное подключение закрывается и удаляется из пула соединений
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
# Дополнительные параметры настройки TLS для DDBoost. Подробное описание параметров и допустимых значений смотрите в официальной документации DDBoost
use_tls: false # включает TLS. Обязательно установите true, если указан хоть один сертификат в секции ddboost.storage.tls или секции глобального TLS («Конфигурация TLS используемая по умолчанию для всех сетевых соединений»)
auth_mode: 0 # режим TLS: 1 - односторонний, 2 - двусторонний, 3 - анонимный
encr_strength: 0 # уровень TLS-шифрования: 1 - слабый, 2 - сильный
cert_verify_flag: 0 # битовая комбинация флагов проверки TLS-сертификатов и FQDN клиента/сервера: 0 – отключить проверку сертификатов, 1 – проверять FQDN сервера, 2 – проверять FQDN клиента. Например, при значении 3 будет проверяться FQDN и сервера и клиента

# --------------------------------------
# Настройки архивирования РК
# --------------------------------------
archive_settings:
upload_params:
part_payload_size: 32MB # размер парта передаваемых данных
checksum_algorithm: CRC32 # выбор алгоритма вычисления контрольной суммы. CRC32 – значение по умолчанию. Допустимые значения: DISABLED, CRC32, SHA256
compression_algorithm: S2 # выбор алгоритма сжатия данных при создании РК. S2 – значение по умолчанию. Допустимые значения: DISABLED, ZSTD, S2

# --------------------------------------
# Политика исполнения резервного копирования
# --------------------------------------
backup_policy:
strategy: pbr.policy.backup.strategy.full # выбор стратегии резервного копирования. Также доступно – pbr.policy.backup.strategy.delta
fast_checkpoint: false # флаг для переключения типа контрольной точки, по умолчанию spread (протяженная), при включении запускает принудительное создание контрольной точки сразу при начале создания базовой РК
workers_no: 2 # количество параллельных потоков, осуществляющих чтение из каталога PGDATA с диска (не включая WAL-файлы)
max_pending_wals: -1 # задает режим работы очереди (включение/отключение) и ее максимальный лимит для WAL-файлов, обрабатываемых в текущий момент (по умолчанию «-1» – очередь включена без ограничения размера)
progress_latency: 0.025 # шаг в долях от размера резервной копии, на котором сообщается прогресс
use_temporary_replication_slot: true # флаг включения использования временного слота репликации при выполнении резервного копирования: при true – используется временный слот репликации, при значении false – используется постоянный слот репликации
read_direct_io: false # режим чтения данных из файлов, исключая использование кеша ОС
write_direct_io: false # режим записи данных в файл без использования кеша ОС (актуально для локальных РК)
read_cache_size: # значение параметра должно быть кратно 4 КБ на Linux # используйте совместно с read_direct_io для РК произвольной папки (generic folder backup)
delta_max_steps: 3 # допустимое отставание реплики от главного узла при восстановлении, измеряемое количеством пропущенных шагов репликации
write_parts_workers_no: 4 # количество параллельных рабочих процессов (workers), выполняющих операцию записи отдельных партов
write_wals_workers_no: 4 # количество параллельных рабочих процессов (workers), выполняющих обработку WAL-файлов
verify_page_checksums: false # активация проверки контрольных сумм страниц во время исполнения РК
max_allowed_page_verification_failures: 0 # максимальное количество ошибок при проверке целостности страниц во время исполнения РК
backup_file_mode: 0400 # числовое представление прав доступа на создаваемые файлы
backup_dir_mode: 0700 # числовое представление прав доступа на создаваемые каталоги
wal_stream_tmp_dir: /tmp # директория для временного хранения WAL-файлов перед записью в резервную копию
protection_key_path: # путь к ключу в KMS HashiCorp Vault, необходимому для защитного преобразования при создании резервной копии
local_path: "<local-path>"
# vault_path: <path>
# vault_key: <key>
compress_tde: true # включает защитное преобразование на стороне copywala. Используется если включено сжатие (в copywala.yaml задан archive_settings.compression_algorithm) и в Pangolin включен TDE (в is_tde_on = on).
# Данный параметр игнорируется при резервном копировании чистого PostgreSQL, произвольных директорий (generic-folder) и других СУБД, в которых не используется защитное преобразование
extra_files: # список путей к дополнительным файлам, которые необходимо включить в резервную копию. По умолчанию пуст: это значит, что в архив резервной копии будут сохранены только данные из PGDATA и из связанных с ней табличных пространств
# файлы, указанные ниже, приведены для примера
- /etc/pangolin-pooler/pangolin-pooler.ini
- /etc/pangolin-manager/postgres.yml

# --------------------------------------
# Пример политики слияния (значения по умолчанию)
# --------------------------------------
merge_policy:
write_parts_workers_no: max(runtime.NumCPU()/2, 1) # количество одновременно работающих процессов для записи частей резервных копий. Устанавливается равным половине числа ядер CPU, но минимум один поток
read_parts_workers_no: max(runtime.NumCPU()/2, 1) # количество одновременно работающих процессов для чтения резервных копий. Равно половине количества ядер CPU, но не менее одного потока
verify_page_checksums: false # проверка контрольных сумм страниц PostgreSQL
max_allowed_page_verification_failures: 0 # максимальное число допустимых ошибок при проверке контрольных сумм страниц
verify_archive_checksums: true # проверка контрольных сумм всего архива резервной копии
read_direct_io: false # приложение будет использовать буферизованный ввод-вывод операционной системы при чтении данных
write_direct_io: false # приложение будет использовать буферизованный ввод-вывод операционной системы при записи данных

# --------------------------------------
# Параметры синхронизации узлов кластера БД
# --------------------------------------
catchup_policy:
strategy: pbr.policy.backup.strategy.full # стратегия синхронизации

# параметры для основного узла (primary)
master_params:
workers_no: 4 # количество параллельных рабочих процессов (workers), одновременно на одном воркере загружается только один файл
wals_workers_no: 4 # количество параллельных рабочих процессов (workers), необходимых для передачи WAL-файлов через репликационный протокол
max_pending_wals: -1 # размер очереди WAL-файлов на отправку. Останавливает синхронизацию (catchup), если лимит очереди WAL-файлов на отправку превышен. По умолчанию выключен
wal_stream_tmp_dir: # директория для временного хранения WAL-файлов
progress_latency: 0.1 # шаг в долях от размера резервной копии, на котором в логах отображается прогресс (0.1 - каждые 10%)
write_file_timeout: 30m # тайм-аут загрузки одного файла, если файл не успел загрузиться за это время, то синхронизация (catchup) обрывается
fast_checkpoint: false # флаг для переключения типа контрольной точки
allow_replica_hosts: # хосты всех узлов кластера, с которых мастеру разрешено подключаться к серверу реплики
- 10.40.48.109
s2tp:
enable_tls: true # флаг использования TLS-протокола
max_connections: 16 # максимальное количество TCP-соединений, которое может быть открыто при взаимодействии с сервером реплики одновременно
read_timeout: 5m # тайм-аут одного запроса на чтение, не учитывается при загрузке файла
write_timeout: 5m # тайм-аут одного запроса на запись, не учитывается при загрузке файла
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# параметры для узла-реплики (standby)
replica_params:
s2tp:
addresses: # адреса, на которых запускается сервер реплики и ожидаются подключения от primary. Если используется Pangolin Manager или другие инструменты управления кластером, убедитесь, что указанные адреса доступны с мастера
- 0.0.0.0:29505
mtls: false # флаг включения взаимодействия по mTLS
max_connections: 16 # максимальное количество TCP-соединений, которое может быть открыто при взаимодействии с сервером реплики одновременно
read_timeout: 5m # тайм-аут одного запроса на чтение, не учитывается при загрузке файла
write_timeout: 5m # тайм-аут одного запроса на запись, не учитывается при загрузке файла
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Конфигурация архивирования WAL-файлов
# --------------------------------------
wal_archiving:
is_multi_wal_archiving_enabled: false # многопоточный режим архивации WAL-файлов
multi_wal_archiving_workers_no: 4 # количество потоков для параллельной передачи WAL-файлов в хранилище
wal_batch_size: 100 # 100 по умолчанию. Чтобы отключить ограничение размера пакета, установите значение равным 0 или любому отрицательному целому числу

# Archive WALs in CWL
is_wal_archiving_in_cwl_enabled: false # включение/отключение архивации журналов предзаписи WAL в CWL
wal_archiving_cwl_max_file_size: 1GB # максимальный размер CWL-архива с WAL-сегментами

force_switch_cwl_lock_timeout: 15s # Максимальное время ожидания командой copywala archive-wal force-switch-cwl освобождения эксклюзивной блокировки, удерживаемой процессом copywala archive-wal при архивировании WAL-файлов в CWL-архив

wal_compression_algorithm: S2 # алгоритм сжатия WAL-файлов. S2 – значение по умолчанию. Допустимые значения: DISABLED, ZSTD, S2, LZ4

is_archive_logs_to_file_only: false # флаг отключения логирования сообщений уровня INFO в стандартный поток ошибок (stderr). При значении true – сообщения уровня INFO записываются только в журнал Copywala

dir_mode: 0700 # настройка прав доступа для каталогов создаваемых при архивировании
file_mode: 0600 # настройка прав доступа для архивируемых WAL-файлов
wal_file_mode: 0600 # числовое представление прав доступа на создаваемые файлы
wal_dir_mode: 0700 # числовое представление прав доступа на создаваемые каталоги

wal_prefetch_size: 0 # включение и регулировка многопоточной загрузки WAL-файлов. По умолчанию выключено
wal_prefetch_dir: "" # путь к директории для хранения предзагруженных WAL-файлов. По умолчанию пустое значение означает что, директория создается в каталоге pg_wal

# Параметры отложенной доставки WAL-файлов
force_local: false # переключение на локальное накопление WAL-файлов. При значении true WAL-файлы сохраняются в локальную директорию (wal_local_destination_uri) с суффиксом .upload-ready и могут быть выгружены в удаленное хранилище командой copywala archive-wal upload-wals
wal_local_destination_uri: <path/to/local/wals/> # путь к локальной директории (local-fs://...) для накопления WAL-файлов, например, local-fs:///pgarclogs/copywala/). Обязателен при force_local: true
upload_wals_workers_no: 4 # количество параллельных рабочих процессов (workers) для выгрузки накопленных WAL-файлов командой copywala archive-wal upload-wals
upload_wals_batch_size: 100 # количество WAL-файлов (пачка), выгружаемая за одну итерацию

# --------------------------------------
# Политика восстановления (ниже приведены значения по умолчанию)
# --------------------------------------
restore_policy:
workers_no: runtime.NumCPU()
jobs_queue_size: 16 # размер очереди задач на распаковку партов архива
progress_latency: 0.1 # шаг в долях от размера резервной копии, на котором сообщается прогресс (0.1 - каждые 10%)
reverse_restore: false # порядок восстановления резервных копий данных. При true – восстановление производится в обратном порядке, при false – восстановление идет последовательно

verify_page_checksums: false # активация проверки контрольных сумм страниц во время восстановления
max_allowed_page_verification_failures: 0 # максимальное количество ошибок при проверке целостности страниц во время восстановления

verify_archive_checksums: true # проверка контрольных сумм всего архива
read_direct_io: false # режим чтения данных из файлов, исключая использование кеша ОС
write_direct_io: false # режим записи данных в файлы, исключая использование кеша ОС (не доступно для generic folder backups)

protection_key_path: # путь к ключу в KMS HashiCorp Vault, необходимому для защитного преобразования при восстановлении из резервной копии
local_path: "<local-path>"
# vault_path: <path>
# vault_key: <key>

# --------------------------------------
# Конфигурация TLS используемая по умолчанию для всех сетевых соединений (DB, S2, S3, ...)
# --------------------------------------
tls:
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Конфигурация Prometheus (подробное описание атрибутов по умолчанию и обязательных атрибутов каждого поля см. в документации)
# --------------------------------------
prometheus:
push_model:
jobname:
address:
process_collector_opts:
report_errors:
pid:
namespace:
frequency:
req_timeout:
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
pull_model:
endpoint: /metrics
address:
process_collector_opts:
report_errors:
pid:
namespace:
handler_opts:
timeout:
max_requests_in_flight:
disable_compression:
log_errors:

tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Опциональные настройки приложения
# --------------------------------------
app:
agent_id_file_path: /etc/pbr/pbr.agent.id # путь к файлу, содержащему идентификатор агентского приложения
copywala_dir: /etc/pbr/copywala # рабочая директория
allow_concurrent_create_backup: false # управляет возможностью запуска нескольких операций создания резервных копий одновременно
agent_id_file_mode: 0400 # числовое представление прав доступа на создаваемые файлы
copywala_dir_mode: 0700 # числовое представление прав доступа на создаваемые каталоги
creds_private_key_path: /var/pbr/copywala/priv.key # путь к приватному ключу приложения
copywala_plugins_dir: /usr/lib/pbr/copywala # путь к директории, где находится плагин защитного преобразования

go_mem_limit: 2GB # мягкий лимит heap-памяти для сборщика мусора Go. При достижении лимита сборщик мусора начинает работать с большей частотой, чтобы удерживать потребление памяти в заданных пределах (в документации go – GOMEMLIMIT)
# если параметр не указан в copywala.yaml, лимит памяти будет автоматически установлен в размере 1/4 от общего объема RAM, доступного в системе (например, при 32 ГБ оперативной памяти лимит составит 8 ГБ)
# если задано значение 0 – будут использоваться настройки Go по умолчанию
# при указании значения – будет установлен заданный лимит
go_gc_percent: 100 # процент роста heap-памяти перед запуском сборки мусора. Значение 100 означает, что сборка мусора запускается после увеличения объёма heap в 2 раза относительно объема после предыдущей сборки (в документации go – GOGC)
# более подробное описание параметров приведено в документации go https://go.dev/doc/gc-guide (см. GOMEMLIMIT и GOGC)

# --------------------------------------
# Настройка параметров подключения к Platform V Monitor (OPM) и Единый клиент (SDK) Platform V Monitor (MSDK)
# --------------------------------------
audit:
central_audit: # секция с подключением к Platform V Monitor (OPM)
address: "<https://audit.example.com>"
tls: # (опционально) сертификаты для подключения к хранилищу через tls
rootca: # пути к сертификату удостоверяющего центра
local_path: "<tls/root.crt>" # путь к локальному файлу
vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
vault_key: "<key>" # ключ внутри JSON-секрета
cert: # пути к сертификату сервера
local_path: "<tls/cert.crt>"
vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
vault_key: "<key>" # ключ внутри JSON-секрета
key: # пути к ключу сервера
local_path: "<tls/cert.key>"
vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
vault_key: "<key>" # ключ внутри JSON-секрета
msdk_audit: # секция с подключением к Единый клиент (SDK) Platform V Monitor (MSDK)
address: "<https://audit.msdk.example.com>"
tls: # (опционально) сертификаты для подключения к хранилищу через tls
rootca: # пути к сертификату удостоверяющего центра
local_path: "<tls/root.crt>" # путь к локальному файлу
vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
vault_key: "<key>" # ключ внутри JSON-секрета
cert: # пути к сертификату сервера
local_path: "<tls/cert.crt>"
vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
vault_key: "<key>" # ключ внутри JSON-секрета
key: # пути к ключу сервера
local_path: "<tls/cert.key>" # путь к локальному файлу
vault_path: "<path>" # путь к секрету в HashiCorp Vault/SecMan
vault_key: "<key>" # ключ внутри JSON-секрета
retrier: # настройка повторных попыток при возникновении ошибок при отправке событий аудита
timeout: 10s # максимальное время выполнения запроса
retries: 5 # максимальное количество попыток
delay_period: 1s # период задержки

# -------------------------------------------
# Переменные окружения для внешних библиотек
# -------------------------------------------
lib_envs:
- name: PG_LICENSE_PATH # путь к директории с файлами лицензий Pangolin
# используется утилитами для получения данных об используемой лицензии
value: /opt/pangolin_license # значение по умолчанию определяется автоматически в зависимости от установленной версии Pangolin: /opt/pangolin-license или /opt/pangolin_license
- name: PG_PLUGINS_PATH # путь к директории с динамическими библиотеками (плагинами) Pangolin
value: /usr/lib/pbr/copywala # значение по умолчанию /usr/lib/pbr/copywala

# --------------------------------------
# Настройка ведения журналов приложения
# --------------------------------------
log:
path: /var/log/pbr/copywala.log # путь к лог-файлу
dir_mode: 0700 # настройка прав доступа на создаваемые каталоги. Значения необходимо задавать в восьмеричной системе счисления с ведущим нулем.
file_mode: 0600 # настройка прав доступа на создаваемые файлы. Значения необходимо задавать в восьмеричной системе счисления с ведущим нулем.
max_size: 100 # максимальный размер лог-файла в мегабайтах. По умолчанию `100 МБ`
max_age: 90 # максимальный возраст лог-файла в днях
max_backups: 10 # максимальное количество резервных копий лог-файлов, которые будут храниться. Если выбрано 0, то количество файлов не ограничено
use_local_time: true # параметр определяет, в каком формате будут записываться метки времени в имена файлов при ротации. Если выбрано true, используется локальное системное время, при false (и по умолчанию) – `UTC`.
compress_backups: false # параметр определяет необходимость сжатия резервных копий лог-файлов. Если выбрано true, лог-файлы будут сжаты, если false, лог-файлы будут храниться без сжатия

Параметры PBR-Agent (файл pbr-agent.yaml)​

# --------------------------------------
# Настройки для взаимодействия с API Gateway
# --------------------------------------
api_gateway:
http_address: https://<agent-manager-host>:<port> # HTTP(S)-адрес API-шлюза (agent-manager) для REST-запросов: получение задач, отправка результатов, heartbeat (обязательно)
ws_address: wss://<agent-manager-host>:<port> # WebSocket-адрес API-шлюза (agent-manager) для двустороннего обмена сообщениями (обязательно)
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройки БД для хранения информации о выполненных задачах резервного копирования и восстановления данных
# --------------------------------------
pbra_db:
host: localhost
port: 5433
database: pbra
user: {user}
password: password
is_pg_auth_config_enabled: false # параметр позволяет применять аутентификацию пользователей при помощи pg_auth_config # если значение выставлено true, то в данном разделе параметр password указывать не нужно
pg_auth_config_plugins_path: /usr/lib/pbr/pbr-agent
query_params: search_path=public # параметр позволяет настроить набор значений, специфичных для Pangolin/PostgreSQL, при подключении к базе данных
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Задержка передачи сигнала состояния агентского приложения
# --------------------------------------
heartbeat_delay: 10s

# --------------------------------------
# Задержка в синхронизации запросов и резервных копий
# --------------------------------------
sync_delay: 5s

# --------------------------------------
# Параметры подключения к HashiCorp/SecMan
# --------------------------------------
vault: # настройки подключения
server: <vault-url>
namespace: <namespace>
path: <mount-path> # путь к точке монтирования хранилища секретов
kv_version: v2 # версия формата хранилища ключей-значений
approle:
role_id: <role-id> # уникальный идентификатор роли
secret_id: <secret-id> # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path
# auth_method: approle # метод аутентификации
# wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token
# wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)

# --------------------------------------
# Конфигурация TLS
# --------------------------------------
tls:
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Опциональные настройки приложения
# --------------------------------------
copywala:
# запуск подпроцесса copywala с указанной конфигурацией
config_path: /etc/pbr/copywala.yaml

app:
# путь к файлу, содержащему идентификатор агентского приложения
agent_id_file_path: /etc/pbr/pbr.agent.id

# --------------------------------------
# Настройка ведения журналов приложения
# --------------------------------------
log:
path: /var/log/pbr/pbr-agent.log # путь к лог-файлу
dir_mode: 0700 # настройка прав доступа на создаваемые каталоги. Значения необходимо задавать в восьмеричной системе счисления с ведущим нулем.
file_mode: 0600 # настройка прав доступа на создаваемые файлы. Значения необходимо задавать в восьмеричной системе счисления с ведущим нулем.
max_size: 100 # максимальный размер лог-файла в мегабайтах. По умолчанию `100 МБ`
max_age: 90 # максимальный возраст лог-файла в днях
max_backups: 10 # максимальное количество резервных копий лог-файлов, которые будут храниться. Если выбрано 0, то количество файлов не ограничено
use_local_time: true # параметр определяет, в каком формате будут записываться метки времени в имена файлов при ротации. Если выбрано true, используется локальное системное время, при false (и по умолчанию) – `UTC`.
compress_backups: false # параметр определяет необходимость сжатия резервных копий лог-файлов. Если выбрано true, лог-файлы будут сжаты, если false, лог-файлы будут храниться без сжатия

Параметры Copywala VDB (файл copywala-vdb.yaml)​

# --------------------------------------
# Настройка подключения к целевой БД
# --------------------------------------
vdb:
http_address: "<https://host:port>"
auth_enabled: <true/false>

# Использование учетных данных в открытом виде
username: "<username>"
password: "<password>"

# Использование учетных данных, сохраненных в защищенном виде
use_enc_creds: <true/false>
enc_creds_path: "</var/pbr/copywala/vdb.creds>"

# Формирование резервной копии в режиме полного снимка (единый снепшот-файл, содержащий все коллекции базы данных)
full_snapshot: <true/false>

# Копирование снепшот-файлов напрямую из локальной файловой системы
copy_local_snapshots: <true/false>
local_snapshots_path: "</vdb/snapshots>"

# по умолчанию применяется глобальный tls
tls:
rootca:
local_path: "<tls/root.crt>" # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: "<tls/cert.crt>" # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: "<tls/cert.key>" # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Назначение резервной копии
# --------------------------------------
# local-fs:///home/postgres/backups/
# ddboost://srv-10-15.host/storage-unit
# s3://srv-10-20.host/bucket-08-9992
# s2://srv-10-25.host:port
backup_destination_uri: "<local-fs:///vdb/backups/>"

# --------------------------------------
# Директория для восстановления данных
# --------------------------------------
restore_data_path: "</vdb/data/>"

# --------------------------------------
# Наименование экземпляра БД для восстановления (уникальное имя экземпляра агента)
# --------------------------------------
restore_instance_name: ""

# --------------------------------------
# Настройка повторных попыток при возникновении ошибок при записи РК (ниже приведены значения по умолчанию)
# --------------------------------------
retrier:
timeout: 10s # максимальное время выполнения запроса
retries: 5 # максимальное количество попыток
delay_period: 1s # период задержки

# --------------------------------------
# Возможность загрузки TLS-сертификатов из защищенного хранилища секретов
# --------------------------------------
vault: # настройки подключения
server: "<vault-url>"
namespace: "<namespace>"
path: "<mount-path>" # путь к точке монтирования хранилища секретов
kv_version: "<v2>" # версия формата хранилища ключей-значений
approle:
role_id: "<role-id>" # уникальный идентификатор роли
secret_id: "<secret-id>" # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path
# auth_method: approle # метод аутентификации
# wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token
# wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)

# --------------------------------------
# Параметры подключения к KMS HashiCorp Vault
# --------------------------------------
kms:
server: "<vault-url>" # URL сервера KMS
namespace: "<namespace>" # пространство имен в KMS HashiCorp Vault
path: "<mount-path>" # путь к точке монтирования хранилища секретов
kv_version: v2 # версия формата KV-хранилища
approle: # вариант авторизации в KMS по роли и ключу роли
role_id: "<role-id>" # уникальный идентификатор роли
secret_id: "<secret-id>" # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path
# auth_method: approle # метод аутентификации
# wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token
# wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)
userpass: # вариант авторизации в KMS по логину и паролю
# username:
# password:
# auth_method:

# --------------------------------------
# Конфигурация S2
# --------------------------------------
s2:
checksum_algorithm: DISABLED # выбор алгоритма вычисления контрольной суммы. Допустимые значения: DISABLED (по умолчанию), CRC32
storage_path: "" # значение по умолчанию пустое. Задается пользователем для возможности выбора одного из дополнительных хранилищ, пример: /var/pbr/s2/backups
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

s2tp_enabled: true # флаг использования протокола S2TP для взаимодействия copywala и storage service (s2). По умолчанию – true. Используется только в рамках операций передачи данных при создании и восстановлении резервных копий. gRPC остается как основной протокол для взаимодействия с S2, кроме переноса данных
s2tp:
addresses: # массив адресов серверов s2
- "<host_1:port_1>"
- "<host_2:port_2>"
enable_tls: true # флаг использования TLS-протокола
max_connections: 16 # максимальное количество открытых соединений к серверу на один указанный адрес (в массиве addresses)
read_timeout: 5m # таймаут для операции чтения
write_timeout: 5m # таймаут для операции записи
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Конфигурация S3
# --------------------------------------
s3:
region: "<ru-test>" # регион s3
access_id: "<id>" # идентификатор пользователя
secret_key: "<key>" # секретный ключ
use_path_style: <true/false> # если параметр имеет значение true, задействуется формат полного URL с указанием пути (path-style addressing); если false – название бакета включается непосредственно в доменное имя.
disable_request_checksums: <true/false> # проверка контрольных сумм запросов
tls: # опционально
rootca:
local_path: "<tls/root.crt>" # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: "<tls/cert.crt>" # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: "<tls/cert.key>" # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Конфигурация DDBoost (Data Domain Boost)
# --------------------------------------
ddboost:
enc_creds_path: "<path-to-enc-creds-file>" # путь к зашифрованным учетным данным для подключения к хранилищу DDBoost (заполняется опционально). При заданном значении параметры username и password в секции storage игнорируются
client_settings:
ddboost_lib_path: libDDBoost.so # путь к динамической библиотеке DDBoost (по умолчанию — libDDBoost.so). Если не задана переменная LD_LIBRARY_PATH или в ней отсутствует нужный путь, укажите здесь полный путь к файлу
read_client_side_decompress: false # флаг включения распаковки на стороне клиента. При значении false распаковка выполняется на стороне сервера. При значении true – на стороне клиента, что позволяет снизить нагрузку на сеть
client_type: 0 # тип клиента, который подключается к DDBoost. Для copywala значение менять не требуется
buffer_size: 0 # размер буфера ввода-вывода. 0 означает использование размер буфера по умолчанию
auto_create_storage_unit: true # автоматически создавать отдельное хранилище (storage_unit) в системе Data Domain для резервных копий, если оно еще не создано
storage:
username: "<username>" # имя пользователя для подключения к хранилищу DDBoost. Игнорируется если в copywala.yaml задан параметр enc_creds_path
password: "<password>" # пароль для подключения к хранилищу DDBoost. Игнорируется если в copywala.yaml задан параметр enc_creds_path
max_conns_no: 16 # максимальное количество одновременных соединений с DDBoost; соединения переиспользуются из пула, если они не простаивали дольше max_idle_time, иначе при необходимости создается новое соединение, если не превышен лимит max_conns_no
max_idle_time: 5m # допустимое время простоя соединения, после которого неактивное подключение закрывается и удаляется из пула соединений
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# Дополнительные параметры настройки TLS для DDBoost. Подробное описание параметров и допустимых значений смотрите в официальной документации DDBoost
use_tls: false # включает TLS. Обязательно установите true, если указан хоть один сертификат в секции ddboost.storage.tls или секции глобального TLS («Конфигурация TLS используемая по умолчанию для всех сетевых соединений»)
auth_mode: 0 # режим TLS: 1 - односторонний, 2 - двусторонний, 3 - анонимный
encr_strength: 0 # уровень TLS-шифрования: 1 - слабый, 2 - сильный
cert_verify_flag: 0 # битовая комбинация флагов проверки TLS-сертификатов и FQDN клиента/сервера: 0 – отключить проверку сертификатов, 1 – проверять FQDN сервера, 2 – проверять FQDN клиента. Например, при значении 3 будет проверяться FQDN и сервера и клиента

# --------------------------------------
# Настройки архивирования РК (ниже приведены значения по умолчанию)
# --------------------------------------
archive_settings:
upload_params:
part_payload_size: 32MB # размер парта передаваемых данных
checksum_algorithm: CRC32 # выбор алгоритма вычисления контрольной суммы. CRC32 – значение по умолчанию. Допустимые значения: DISABLED, CRC32, SHA256
compression_algorithm: S2 # выбор алгоритма сжатия данных при создании РК. S2 – значение по умолчанию. Допустимые значения: DISABLED, ZSTD, S2

# --------------------------------------
# Политика исполнения резервного копирования (ниже приведены значения по умолчанию)
# --------------------------------------
backup_policy:
write_parts_workers_no: 4 # количество параллельных рабочих процессов (workers), выполняющих операцию записи отдельных партов
protection_key_path: # путь к ключу в KMS HashiCorp Vault, необходимому для защитного преобразования при создании резервной копии
local_path: "<local-path>"
# vault_path: <path>
# vault_key: <key>

# --------------------------------------
# Политика восстановления (ниже приведены значения по умолчанию)
# --------------------------------------
restore_policy:
workers_no: runtime.NumCPU()
jobs_queue_size: 16 # размер очереди задач на распаковку партов архива

verify_archive_checksums: true # проверка контрольных сумм всего архива
read_direct_io: false # режим чтения данных из файлов, исключая использование кеша ОС

protection_key_path: # путь к ключу в KMS HashiCorp Vault, необходимому для защитного преобразования при восстановлении из резервной копии
local_path: "<local-path>"
# vault_path: <path>
# vault_key: <key>

# --------------------------------------
# Конфигурация TLS используемая по умолчанию для всех сетевых соединений
# --------------------------------------
tls:
rootca:
local_path: "<tls/root.crt>" # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: "<tls/cert.crt>" # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: "<tls/cert.key>" # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Опциональные настройки приложения (ниже приведены значения по умолчанию)
# --------------------------------------
app:
agent_id_file_path: /etc/pbr/pbr.agent.id # путь к файлу, содержащему идентификатор агентского приложения
agent_id_file_mode: 0400 # числовое представление прав доступа на создаваемые файлы
copywala_dir: /etc/pbr/copywala # рабочая директория
copywala_dir_mode: 0700 # числовое представление прав доступа на создаваемые каталоги
allow_concurrent_create_backup: false # управляет возможностью запуска нескольких операций создания резервных копий одновременно
creds_private_key_path: /var/pbr/copywala/priv.key # путь к приватному ключу приложения
copywala_plugins_dir: /usr/lib/pbr/copywala # путь к директории, где находится плагин защитного преобразования

go_mem_limit: 2GB # мягкий лимит heap-памяти для сборщика мусора Go. При достижении лимита сборщик мусора начинает работать с большей частотой, чтобы удерживать потребление памяти в заданных пределах (в документации go – GOMEMLIMIT)
# если параметр не указан в copywala.yaml, лимит памяти будет автоматически установлен в размере 1/4 от общего объема RAM, доступного в системе (например, при 32 ГБ оперативной памяти лимит составит 8 ГБ)
# если задано значение 0 – будут использоваться настройки Go по умолчанию
# при указании значения – будет установлен заданный лимит
go_gc_percent: 100 # процент роста heap-памяти перед запуском сборки мусора. Значение 100 означает, что сборка мусора запускается после увеличения объёма heap в 2 раза относительно объема после предыдущей сборки (в документации go – GOGC)
# более подробное описание параметров приведено в документации go https://go.dev/doc/gc-guide (см. GOMEMLIMIT и GOGC)

# --------------------------------------
# Настройка ведения журналов приложения (ниже приведены значения по умолчанию)
# --------------------------------------
log:
path: /var/log/pbr/copywala.log # путь к лог-файлу
dir_mode: 0700 # настройка прав доступа на создаваемые каталоги. Значения необходимо задавать в восьмеричной системе счисления с ведущим нулем.
file_mode: 0600 # настройка прав доступа на создаваемые файлы. Значения необходимо задавать в восьмеричной системе счисления с ведущим нулем.
max_size: 100 # максимальный размер лог-файла в мегабайтах. По умолчанию `100 МБ`
max_age: 90 # максимальный срок хранения лог-файла в днях
max_backups: 10 # максимальное количество резервных копий лог-файлов, которые будут храниться. Если выбрано 0, то количество файлов не ограничено
use_local_time: true # параметр определяет, в каком формате будут записываться метки времени в имена файлов при ротации. Если выбрано true, используется локальное системное время, при false (и по умолчанию) – `UTC`.
compress_backups: false # параметр определяет необходимость сжатия резервных копий лог-файлов. Если выбрано true, лог-файлы будут сжаты, если false, лог-файлы будут храниться без сжатия

Параметры Agent Manager (файл agent-manager.yaml)​

# --------------------------------------
# Настройки для взаимодействия с API Gateway
# --------------------------------------
api:
address: 0.0.0.0:29010 # адрес, на котором запускается сервер Agent Manager # обязательно к заполнению
mtls: false # необходимость проверки сертификатов клиента
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройки подключения по TCP к Agent Manager
# --------------------------------------
ws:
address: 0.0.0.0:29015
mtls: false # необходимость проверки сертификатов клиента
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка подключения к БД
# --------------------------------------
db:
host: hostname.local
port: 5433
user: {user}
password: pass
database: pbr_agent_manager
query_params: search_path=public # параметр позволяет настроить набор значений, специфичных для Pangolin/PostgreSQL, при подключении к базе данных
vault_database_engine_static_role: role_name # статическая роль, которая выдает фиксированные учетные данные для доступа к базе данных
max_open_conns: 100
max_idle_conns: 25
conn_max_lifetime: 5m
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка для взаимодействия с OpenID
# --------------------------------------
open_id:
realm_url: https://keycloak.host/realms/realm-name # URL-адрес Keycloak realm
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка выпуска токенов доступа
# --------------------------------------
auth:
public_key:
local_path: /etc/pbr/agent-manager/example-key.pem.pub # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

private_key:
local_path: /etc/pbr/agent-manager/example-key.pem # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

access_token_life_time: 15m # время жизни JWT-токена доступа
refresh_token_life_time: 72h # время жизни JWT-токена для обновления пары токенов
registration_token_life_time: 24h # время жизни JWT-токена для регистрации агентского приложения

# --------------------------------------
# Параметры подключения к HashiCorp/SecMan
# --------------------------------------
vault: # настройки подключения
server: <vault-url>
namespace: <namespace>
path: <mount-path> # путь к точке монтирования хранилища секретов
kv_version: v2 # версия формата хранилища ключей-значений
approle:
role_id: <role-id> # уникальный идентификатор роли
secret_id: <secret-id> # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path
auth_method: approle # метод аутентификации
wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token
wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)

# --------------------------------------
# Конфигурация TLS
# --------------------------------------
tls:
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка ведения журналов приложения
# --------------------------------------
log:
path: /var/log/pbr/agent-manager.log # путь к лог-файлу
max_size: 100 # максимальный размер лог-файла в мегабайтах. По умолчанию `100 МБ`
max_age: 90 # максимальный возраст лог-файла в днях
max_backups: 10 # максимальное количество резервных копий лог-файлов, которые будут храниться. Если выбрано 0, то количество файлов не ограничено
use_local_time: true # параметр определяет, в каком формате будут записываться метки времени в имена файлов при ротации. Если выбрано true, используется локальное системное время, при false (и по умолчанию) – `UTC`.
compress_backups: false # параметр определяет необходимость сжатия резервных копий лог-файлов. Если выбрано true, лог-файлы будут сжаты, если false, лог-файлы будут храниться без сжатия

Параметры Recovery Manager (файл recovery-manager.yaml)​

# --------------------------------------
# Настройки для взаимодействия с API Gateway
# --------------------------------------
api_gateway:
address: http://api.pbr.host:29000 # адрес API Gateway
trusted_ca: root.crt # путь к доверенному сертификату для безопасного взаимодействия с API Gateway

# --------------------------------------
# Общие настройки приложения
# --------------------------------------
common:
timeout: 10s # максимальное время выполнения запроса

# --------------------------------------
# Настройки для взаимодействия с OpenID
# --------------------------------------
open_id:
realm_url: https://keycloak.host/realms/realm-name
client_id: some-client-id # идентификатор клиента из keycloak
client_secret: some-client-secret # секрет из keycloak
trusted_ca: root.crt # путь к доверенному сертификату для безопасного взаимодействия с OpenID

# --------------------------------------
# Настройки для взаимодействия с AI-агентом (LLM-провайдером)
# --------------------------------------
ai:
api_key: copywala@sbertech.ru|some-api-key # API-ключ для аутентификации в LLM-провайдере
base_url: https://api.ai.sbt/openai/v1 # базовый URL LLM-провайдера (OpenAI-compatible endpoint)
model: GigaChat-2 # идентификатор LLM

# --------------------------------------
# Настройка ведения журналов приложения
# --------------------------------------
log:
path: /var/log/pbr/recovery-manager.log # путь к лог-файлу
max_size: 100 # максимальный размер лог-файла в мегабайтах. По умолчанию `100 МБ`
max_age: 90 # максимальный возраст лог-файла в днях
max_backups: 10 # максимальное количество резервных копий лог-файлов, которые будут храниться. Если выбрано 0, то количество файлов не ограничено
use_local_time: true # параметр определяет, в каком формате будут записываться метки времени в имена файлов при ротации. Если выбрано true, используется локальное системное время, при false (и по умолчанию) – `UTC`.
compress_backups: false # параметр определяет необходимость сжатия резервных копий лог-файлов. Если выбрано true, лог-файлы будут сжаты, если false, лог-файлы будут храниться без сжатия

Параметры Storage Manager (файл storage-manager.yaml)​

# --------------------------------------
# Настройки для взаимодействия с API Gateway
# --------------------------------------
api:
address: 0.0.0.0:29030 # адрес, на котором запускается сервер Storage Manager
mtls: false # необходимость проверки сертификата клиента
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройки подключения к БД
# --------------------------------------
db:
host: hostname.local
port: 5433
user: {user}
password: pass
database: pbr_storage_manager
query_params: search_path=public # параметр позволяет настроить набор значений, специфичных для Pangolin/PostgreSQL, при подключении к базе данных
vault_database_engine_static_role: role_name # статическая роль, которая выдает фиксированные учетные данные для доступа к базе данных
max_open_conns: 100
max_idle_conns: 25
conn_max_lifetime: 5m
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка для взаимодействия с OpenID
# --------------------------------------
open_id:
realm_url: https://sso.test.host/realms/REALMNAME
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка выпуска токенов доступа
# --------------------------------------
auth:
public_key:
local_path: /etc/pbr/storage-manager/public-key.pem.pub # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

private_key:
local_path: /etc/pbr/storage-manager/private-key.pem # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

access_token_life_time: 15m # время жизни JWT-токена доступа
refresh_token_life_time: 72h # время жизни JWT-токена для обновления пары токенов
registration_token_life_time: 24h # время жизни JWT-токена для регистрации агентского приложения

# --------------------------------------
# Возможность загрузки TLS-сертификатов из защищенного хранилища секретов
# --------------------------------------
vault: # настройки подключения
server: <vault-url>
namespace: <namespace>
path: <mount-path> # путь к точке монтирования хранилища секретов
kv_version: v2 # версия формата хранилища ключей-значений
approle:
role_id: <role-id> # уникальный идентификатор роли
secret_id: <secret-id> # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path
auth_method: approle # метод аутентификации
wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token
wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)

# --------------------------------------
# Конфигурация TLS
# --------------------------------------
tls:
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка ведения журналов приложения
# --------------------------------------
log:
path: /var/log/pbr/storage-manager.log # путь к лог-файлу
max_size: 100 # максимальный размер лог-файла в мегабайтах. По умолчанию `100 МБ`
max_age: 90 # максимальный возраст лог-файла в днях
max_backups: 10 # максимальное количество резервных копий лог-файлов, которые будут храниться. Если выбрано 0, то количество файлов не ограничено
use_local_time: true # параметр определяет, в каком формате будут записываться метки времени в имена файлов при ротации. Если выбрано true, используется локальное системное время, при false (и по умолчанию) – `UTC`.
compress_backups: false # параметр определяет необходимость сжатия резервных копий лог-файлов. Если выбрано true, лог-файлы будут сжаты, если false, лог-файлы будут храниться без сжатия

Параметры Task Manager (файл task-manager.yaml)​

# --------------------------------------
# Настройки для взаимодействия с API Gateway
# --------------------------------------
api:
address: 0.0.0.0:29020 # адрес, на котором запускается сервер Task Manager # обязательно к заполнению
mtls: false # необходимость проверки сертификатов клиента
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка подключения к БД
# --------------------------------------
db:
host: hostname.local
port: 5433
user: {user}
password: pass
database: pbr_task_manager
query_params: search_path=public # параметр позволяет настроить набор значений, специфичных для Pangolin/PostgreSQL, при подключении к базе данных
vault_database_engine_static_role: role_name # статическая роль, которая выдает фиксированные учетные данные для доступа к базе данных
max_open_conns: 100
max_idle_conns: 25
conn_max_lifetime: 5m
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка подключения к Agent Manager
# --------------------------------------
agent_manager:
http_address: https://<IP-Address>:29010
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка для взаимодействия с OpenID
# --------------------------------------
open_id:
realm_url: https://keycloak.host/realms/realm-name
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка выпуска токенов доступа
# --------------------------------------
auth:
agents_public_key:
local_path: /etc/pbr/agent-manager/example-key.pem.pub # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Параметры подключения к HashiCorp/SecMan
# --------------------------------------
vault: # настройки подключения
server: <vault-url>
namespace: <namespace>
path: <mount-path> # путь к точке монтирования хранилища секретов
kv_version: v2 # версия формата хранилища ключей-значений
approle:
role_id: <role-id> # уникальный идентификатор роли
secret_id: <secret-id> # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path
# auth_method: approle # метод аутентификации
# wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token
# wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)

# --------------------------------------
# Конфигурация TLS
# --------------------------------------
tls:
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка ведения журналов приложения
# --------------------------------------
log:
path: /var/log/pbr/task-manager.log # путь к лог-файлу
max_size: 100 # максимальный размер лог-файла в мегабайтах. По умолчанию `100 МБ`
max_age: 90 # максимальный возраст лог-файла в днях
max_backups: 10 # максимальное количество резервных копий лог-файлов, которые будут храниться. Если выбрано 0, то количество файлов не ограничено
use_local_time: true # параметр определяет, в каком формате будут записываться метки времени в имена файлов при ротации. Если выбрано true, используется локальное системное время, при false (и по умолчанию) – `UTC`.
compress_backups: false # параметр определяет необходимость сжатия резервных копий лог-файлов. Если выбрано true, лог-файлы будут сжаты, если false, лог-файлы будут храниться без сжатия

Параметры Storage Service (файл storage-service.yaml)​

# --------------------------------------
# Настройки для взаимодействия с API Gateway
# --------------------------------------
api_gateway:
http_address: https://localhost:29000 # адрес для подключения Storage Service к сервисам инфраструктуры
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Параметры подключения к HashiCorp/SecMan
# --------------------------------------
vault: # настройки подключения
server: <vault-url>
namespace: <namespace>
path: <mount-path> # путь к точке монтирования хранилища секретов
kv_version: v2 # версия формата хранилища ключей-значений
approle:
role_id: <role-id> # уникальный идентификатор роли
secret_id: <secret-id> # секретный ключ роли. Либо указывается явно, либо прописывается wrapping_secret_id_file_path
auth_method: approle # метод аутентификации
wrapping_secret_id_file_path: /var/pbr/cw.wrapped.secret.vlt # путь к файлу для хранения wrapping token
wrapping_secret_id_ttl: 8h # время жизни wrapping token (например, 10m - 10 минут, 6h - 6 часов)

# --------------------------------------
# Опциональные настройки приложения
# --------------------------------------
app:
work_dir: /var/pbr/storage-service # рабочий каталог приложения для хранения временных файлов, журналов и т.д.
work_dir_mode: 0700 # права доступа к рабочему каталогу. 0700 означает, что полный доступ к этому каталогу имеет только владелец файла.
creds_private_key_path: /var/pbr/copywala/priv.key # путь к приватному ключу приложения

go_mem_limit: 0 # мягкий лимит heap-памяти для сборщика мусора Go. При достижении лимита сборщик мусора начинает работать с большей частотой, чтобы удерживать потребление памяти в заданных пределах (в документации go – GOMEMLIMIT)
# при указании значения будет установлен соответствующий лимит памяти. По умолчанию используется значение 0, при котором применяются стандартные настройки Go
go_gc_percent: 0 # процент роста heap-памяти перед запуском сборки мусора. Значение 100 означает, что сборка мусора запускается после увеличения объёма heap в 2 раза относительно объема после предыдущей сборки (в документации go – GOGC)
# более подробное описание параметров приведено в документации go https://go.dev/doc/gc-guide (см. GOMEMLIMIT и GOGC)

zero_copy: true # флаг для использования методов zero-copy (нулевого копирования) записи данных

# --------------------------------------
# Пример политики слияния (значения по умолчанию)
# --------------------------------------
merge_policy:
write_parts_workers_no: max(runtime.NumCPU()/2, 1) # определяет количество рабочих потоков, используемых для одновременной записи частей файла.
read_parts_workers_no: max(runtime.NumCPU()/2, 1) # определяет количество потоков для параллельной обработки чтения частей файла.
write_direct_io: false # если false, приложение будет использовать буферизованный ввод-вывод операционной системы при записи данных.
read_direct_io: false # если false, приложение будет использовать буферизованный ввод-вывод операционной системы при чтении данных.

# --------------------------------------
# Конфигурация DDBoost (Data Domain Boost)
# --------------------------------------
ddboost:
enc_creds_path: "<path-to-enc-creds-file>" # путь к зашифрованным учетным данным для подключения к хранилищам DDBoost (заполняется опционально). При заданном значении enc_creds_path параметры username и password в секции storages игнорируются
client_settings:
ddboost_lib_path: libDDBoost.so # путь к динамической библиотеке DDBoost (по умолчанию — libDDBoost.so). Если не задана переменная LD_LIBRARY_PATH или в ней отсутствует нужный путь, укажите здесь полный путь к файлу
read_client_side_decompress: false # флаг включения распаковки на стороне клиента. При значении false распаковка выполняется на стороне сервера. При значении true – на стороне клиента, что позволяет снизить нагрузку на сеть
client_type: 0 # тип клиента, который подключается к DDBoost. Для storage-service значение менять не требуется
buffer_size: 0 # размер буфера ввода-вывода. 0 означает использование размер буфера по умолчанию
auto_create_storage_unit: true # при запуске сервиса автоматически проверять наличие отдельных хранилищ в системе Data Domain, указанных в storage-service.yaml в параметрах storage_path и allowed_storage_paths. Если хранилища отсутствуют, они будут созданы автоматически
storages: # секция со списком хранилищ (Data Domain) с их параметрами подключения
- address: "<ip_address>" # IP-адрес хранилища
username: "<username>" # имя пользователя для подключения к хранилищу DDBoost. Игнорируется если в storage-service.yaml задан параметр enc_creds_path
password: "<password>" # пароль для подключения к хранилищу DDBoost. Игнорируется если в storage-service.yaml задан параметр enc_creds_path
max_conns_no: 16 # максимальное количество одновременных соединений с DDBoost; соединения переиспользуются из пула, если они не простаивали дольше max_idle_time, иначе при необходимости создается новое соединение, если не превышен лимит max_conns_no
max_idle_time: 5m # допустимое время простоя соединения, после которого неактивное подключение закрывается и удаляется из пула соединений
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
# Дополнительные параметры настройки TLS для DDBoost. Подробное описание параметров и допустимых значений смотрите в официальной документации DDBoost
use_tls: false # включает TLS. Обязательно установите true, если указан хоть один сертификат в секции ddboost.storages.tls или секции глобального TLS («Конфигурация TLS используемая по умолчанию для всех сетевых соединений»)
auth_mode: 0 # режим TLS: 1 - односторонний, 2 - двусторонний, 3 - анонимный
encr_strength: 0 # уровень TLS-шифрования: 1 - слабый, 2 - сильный
cert_verify_flag: 0 # битовая комбинация флагов проверки TLS-сертификатов и FQDN клиента/сервера: 0 – отключить проверку сертификатов, 1 – проверять FQDN сервера, 2 – проверять FQDN клиента. Например, при значении 3 будет проверяться FQDN и сервера и клиента
- ... # список других хранилищ

# --------------------------------------
# Параметры gRPC-сервера Storage Service
# --------------------------------------
grpc:
address: 0.0.0.0:29509
mtls: false # необходимость проверки сертификатов клиента
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Параметры s2tp-сервера Storage Service
# --------------------------------------
s2tp:
addresses: # массив для указания используемых адресов сетевых интерфейсов для работы серверов. Если массив не задан, используется значение параметра backup_destination_uri из файла copywala.yaml, к которому автоматически добавляются порты по умолчанию: 29500 и 29501
- 0.0.0.0:29500
- 0.0.0.0:29501
# ...
mtls: false # необходимость проверки сертификатов клиента
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
max_connections: 256 # максимальное количество подключений для одного адреса, указанного выше
read_timeout: 5m # тайм-аут для операции чтения
write_timeout: 5m # тайм-аут для операции записи

# --------------------------------------
# Путь к основному хранилищу
# --------------------------------------
storage_path: /var/pbr/backups # путь к хранилищу резервных копий, который используется по умолчанию, если не задан путь в `copywala.yaml` в параметрах `storage_path` или `backup_destination_uri`
# ddboost://1.2.3.4/storage-unit/sub/dir

# --------------------------------------
# Список дополнительных хранилищ, разрешенных для установки со стороны клиента
# --------------------------------------
allowed_storage_paths:
- /mnt/nfs-001
- /mnt/nfs-002
- /mnt/nfs-003
# Примеры значений allowed_storage_paths:
# - /mnt/nfs/backups
# - /mnt/ci/backups
# - local-fs:///mnt/ff/backups
# - ddboost://1.2.3.4/storage-unit/sub/dir

is_allowed_storage_paths_only: true # включает проверку хранилища, полученного от copywala (задается в copywala.yaml параметром storage_path) на наличие в списке разрешенных хранилищ (определяется параметром allowed_storage_paths):
# true — запись выполняется только если storage_path входит в список разрешенных хранилищ
# false — запись выполняется без проверки storage_path

# --------------------------------------
# Максимальное количество одновременных потоков на одного клиента
# --------------------------------------
max_concurrent_streams: 256

# --------------------------------------
# Конфигурация TLS
# --------------------------------------
tls:
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Конфигурация Prometheus (подробное описание атрибутов по умолчанию и обязательных атрибутов каждого поля см. в документации)
# --------------------------------------
prometheus:
push_model:
jobname:
address:
process_collector_opts:
report_errors:
pid:
namespace:
frequency:
req_timeout:
tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
pull_model:
endpoint: /metrics
address:
process_collector_opts:
report_errors:
pid:
namespace:
handler_opts:
timeout:
max_requests_in_flight:
disable_compression:
log_errors:

tls: # опционально
rootca:
local_path: tls/root.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
cert:
local_path: tls/cert.crt # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета
key:
local_path: tls/cert.key # путь к локальному файлу
# vault_path: <path> # путь к секрету в HashiCorp/SecMan
# vault_key: <key> # ключ внутри json-секрета

# --------------------------------------
# Настройка ведения журналов приложения
# --------------------------------------
log:
path: /var/log/pbr/storage-service.log # обязательно к заполнению
max_size: 100 # максимальный размер лог-файла в мегабайтах. По умолчанию `100 МБ`
max_age: 90 # максимальный возраст лог-файла в днях
max_backups: 10 # максимальное количество резервных копий лог-файлов, которые будут храниться. Если выбрано 0, то количество файлов не ограничено
use_local_time: false # параметр определяет, в каком формате будут записываться метки времени в имена файлов при ротации. Если выбрано true, используется локальное системное время, при false (и по умолчанию) – `UTC`.
compress_backups: false # параметр определяет необходимость сжатия резервных копий лог-файлов. Если выбрано true, лог-файлы будут сжаты, если false, лог-файлы будут храниться без сжатия