Пример заполненного файла vars.yml#

Установка в OpenShift#

Ниже представлен полный список значений по умолчанию, которые при необходимости можно переопределить в своем inventory.

Базовый файл для OS#

Базовый файл — файл Ansible/inventories/!EXAMPLE_OS!/group_vars/all/vars.yml, содержащий минимум настроек для корректной установки приложения.

Пример заполненного базового файла vars.yml:

openshift_url: https://api.example.ru:6443 # Адрес подключения к openshift
openshift_token: "{{ token }}" # токен подключения к openshift
openshift_namespace: _PLACEHOLDER_ # наименование пространства в openshift

scheduler: # В OpenShift/Kubernetes
  name: example # Суффикс деплоймента. !!! Только строчные буквы, цифры и знак минус. Иначе будет ошибка и деплоймент не сработает !!!
  registry: "registry" # Адрес репозитория до образа~~
  registry_path: "path/to" # Путь в репозитории
  replicas: 2   # Количество реплик
  pullImage: "TUZ"   # ТУЗ для подключения к репозиторию образов
  healthCheckPort: 8081   # Порт проверки состояния доступности приложения
  jvmArgs: "-noverify -XX:+AlwaysPreTouch -XX:+AlwaysActAsServerClassMachine -XX:+UseContainerSupport"   # Дополнительные аргументы JVM
  #resources:   # Пример переопределения дефолтных ресурсов
  #  limits: # Ресурсы для лимитов
  #    cpu: 10.5  # Устанавливаемый лимит для CPU
  #    memory: 1600000M # Устанавливаемый лимит для памяти
  #  requests: # Ресурсы для запросов
  #    cpu: 10.3 # Запрашиваемое CPU
  #    memory: 1400000M # Запрашиваемая памяти
  # Аннотации для Deployment
  annotations: 
    "sidecar.istio.io/inject": "false" # Включение/выключение интеграции с Сервисным прокси SVPX/ istio 
  serviceAccountName: sa-fpss # Имя serviceAccount используемое для развертывания EVPT
  #  cluster: # Настройки akka кластера 
  #    management:
  #      port: 8082 
  #    remote: 
  #      port: 8002 
  #    timeoutes: 
  #      unstable: "120s" 
  #      init: "15s" 
  #      join: "120s" 
  scheduler:
    port: "8092" # Порт на котором запускается EVPT
    logLevel: "info" # Уровень логирования трансформации сообщений
    parallel: 1  # Количество параллельных потоков обработки для одного экземпляра приложения
  akka:   # Общие параметры для системы акторов
    logger:     # Параметры логирования акторов
      startupTimeout: "30s"       # Таймаут инициализации системы логирования акторов
  routeHostName: apps.example.ru # Host создаваемого route 
  audit:
    audit.service.type: log     # Логирование событий

Расширенный файл настроек для OS#

Расширенный файл — файл Ansible/roles/scheduler_os/defaults/main.yml. Представляет из себя пример всех изменяемых настроек со значениями «по умолчанию». Любую из указанных настроек можно перенести в свой vars.yml для переопределения ее значения.

При использовании HashiCorp Vault необходимо выбрать один из вариантов получения сертификатов.

Ниже представлен вариант выпуск сертификата через «PKI Engine HashiCorp Vault».

Данный файл подразумевает включение всех блоков для работы с EVPT:

#helm_cli: helm # путь до helm
#kubeconfig_path: /home/user/kubeconfig # путь до файла kubeconfig (может быть зашифрован через ansible-vault)
api_url: https://api.example.ru:6443 # URL API openshift/k8s (не требуется при наличии kubeconfig_path)
token: __PLACEHOLDER__ # токен пользователя (сервис аккаунта) для установки (не требуется при наличии kubeconfig_path)
skip_tls_verify: false # игнорировать проверку доверия для URL API (не требуется при наличии kubeconfig_path)
namespace: my-evpt-namespace # наименование проекта в openshift/k8s

ansible_no_log: true # Маскирование сенситивных сообщений в ansible
scheduler:
  name: example # Суффикс деплоймента !!! Только строчные буквы, цифры и знак минус. Иначе будет ошибка и деплоймент не сработает !!!
  openshiftInstall: true # Установка в openshift (true) или в k8s (false)
  registry: "registry"   # Адрес репозитория до образа
  registry_path: "path/to"   # Путь в репозитории
  pullImage: "TUZ"   # ТУЗ для подключения к репозиторию образов
  serviceAccountName: sa-fpss # Имя serviceAccount используемое для развертывания EVPT
  replicas: 1   # Количество реплик
  # Параметры healthCheck
  healthCheck:
    healthCheckPort: 8080 # Порт проверки состояния доступности приложения
    changeLoggersAvailable: false # Возможность изменения уровня незаданных в logback логеров
    changeRootAvailable: false # Возможность изменения уровня root логера
  # Ожидание старта Vault Sidecar, при наличии аннотации "vault.hashicorp.com/agent-inject" со значением true
  waitVault: true
  # Ожидание старта Istio Sidecar, при наличии аннотации "sidecar.istio.io/inject" со значением true
  waitIstio: true
  #jvmArgs: ""   # Дополнительные аргументы JVM
  # Пример переопределения парамметров readinessProbe
  #readinessProbe:
  #  initialDelaySeconds: 30
  #  timeoutSeconds: 10
  #  periodSeconds: 10
  #  successThreshold: 1
  #  failureThreshold: 20
  # Пример переопределения парамметров livenessProbe
  #livenessProbe:
  #  initialDelaySeconds: 40
  #  timeoutSeconds: 10
  #  periodSeconds: 10
  #  successThreshold: 1
  #  failureThreshold: 20

  # FeatureToggle для включения/отключения антитенантности (pod anti-affinity)
  # Если значение установлено в true, то антитенантность будет применена к подам,
  # чтобы они не размещались на одном узле (node).
  # Значение по умолчанию: true
  feature:
    SelfAntiAffinity:
      enabled: true

  rollingUpdate:
    maxUnavailable: 25% # Максимальное количество недоступных подов во время обновления
    maxSurge: 25% # Максимальное количество дополнительных подов во время обновления

  # Пример переопределения дефолтных ресурсов
  #resources: 
  #  limits: # Ресурсы для лимито
  #    cpu: 10.5 # Устанавливаемый лимит для CPU
  #    memory: 1600000M # Устанавливаемый лимит для памяти
  #  requests: # Ресурсы для запросов
  #    cpu: 10.3 # Запрашиваемое CPU
  #    memory: 1400000M # Запрашиваемая память
  annotations: {}   # Аннотации для Deployment
  labels: {} # Лейблы для Deployment, добавляются как есть
    "sidecar.istio.io/inject": "false" # Включение istio
  cluster: # Настройки akka кластера
    scheduler:
      port: 8092
    management: 
      port: 8082 
    remote: 
      port: 8002 
    timeoutes: 
      unstable: "120s" 
      init: "15s" 
      join: "120s" 
  scheduler:
    port: "8092" # Порт на котором запускается EVPT
    logLevel: "debug"     # Уровень логирования трансформации сообщений
    parallel: 1     # Количество параллельных потоков обработки для одного экземпляра приложения
  #    ssl:
  #      truststore.location: /path/to/*.jks # Сертификат для scheduler
  #      truststore.password: __PLACEHOLDER__  # Пароль от keyStore
  #      keystore.location: /path/to/*.jks # Путь до keystore
  #      keystore.password: __PLACEHOLDER__ # Пароль keystore
  #      key.password: __PLACEHOLDER__ # Пароль для сертификата
  #      keystore.mode: 600 # Права для keystore хранилища
  #      truststore.mode: 600 # Права для truststore хранилища
  #      vault.address: https://vault.address # HashiCorp Vault URL
  #      vault.pki.role.name: test1 # Имя роли в PKI Engine
  #      vault.pki.common.name: EVPT # Common name (CN) для генерации сертификатов
  #      vault.auth.type: approle # Тип аутентификации. Доступные значения: approle, token, password, cert. Значение по умолчанию: approle
  #      vault.auth.role.id: <role_id> # Role ID для типа аутентификации approle
  #      vault.auth.secret.id: <secret.id> # Secret ID для типа аутентификации approle 
  #      vault.tls.enable: "true" # Включение/выключение TLS
  #      vault.tls.keystore.location: /path/to/*.jks # Путь до keystore
  #      vault.tls.keystore.password: password # Пароль keystore
  #      vault.tls.key.password: password # Пароль ключа key
  #      vault.tls.truststore.location: /path/to/*.jks # Путь до truststore
  #      vault.tls.truststore.password: password # vault.tls.truststore.password
  #      vault.engine.version: 1 # Версия API для key-value машины. Значение по умолчанию: 1
  #      vault.secret.path: kv1/interceptor # Секретный путь для ключа, keystore и truststore паролей
  #      vault.secret.key: key # Secret key для пароля ключа
  #      vault.secret.keystore: keystore # Secret key для keystore пароля
  #      vault.secret.truststore: truststore # Secret key для truststore пароля
  environment:
    LANG: "ru_RU.UTF-8" # Язык для локализации сообщений программы
    LC_ALL: "ru_RU.UTF-8" # Устанавливает язык и локализацию для всех категорий
    LANGUAGE: "en_US:en:ru_RU.UTF-8:ru_RU:ru" # Язык для интерфейса пользователя и сообщений об ошибках

  fluentBit: # Подключение к fluentBit
    create: false
  #    logLevel: info # Уровень логирования
  #    image: fluent-bit:latest # Используемый образ fluent-bit
  #    kafka: # Настройки Kafka, в которую будут отправляться логи
  #      brokers: localhost:9092
  #      topics: logstash
  #      protocol: SSL
  #      keyFilePath: /vault/logger-key.pem
  #      certificateFilePath: /vault/logger-cert.pem
  #      caFilePath: /vault/logger-cacerts.pem
  #    extraConfig: # Опциональные парамтеры для Kafka
  #      rdkafka.queue.buffering.max.messages: 100000
  #      rdkafka.request.required.acks: 1
  #      rdkafka.ssl.key.password: <password>
  #    resources: # Опциональная настройка ресурсов для fluentBit
  #      limits:
  #        cpu: 100m
  #        memory: 200mi
  #      requests:
  #        cpu: 50m
  #        memory: 100mi

    telemetry: # Конфигурация для Open Telemetry
#    config:
#      file_format: "0.1"
#      resource:
#        attributes:
#          service.name: "<имя сервиса>"
#      propagators: [ tracecontext ]
#      tracer_provider:
#        processors:
#          - simple:
#              exporter:
#                otlp:
#                  endpoint: http://<host>:<port>
#        sampler:
#          always_on: { }

  pekko:   # Общие параметры для системы акторов
    logger:     # Параметры логирования акторов
      startupTimeout: "30s"       # Таймаут инициализации системы логирования акторов
  logback:
    level: info # Общий уровень логирования (error, debug, info, warn)
  #    loggers: # Настройка дополнительных логеров. В примере ниже указан пакет и уровень логирования
  #      - name: "org.apache.kafka" 
  #        level: warn 
  #      - name: "com.typesafe.akka" 
  #        level: debug
  #    rest: # HTTP appender для отправки логов через rest адаптер EVTA
  #      url: exampleadapter
  #      port: 8081
  #      path: /publish/ALPHA/K2_IAZCommon/Common/example/TESTA/1
  #      reconnectDelay: 10
  #      never_block: true # блокировка работы приложения при недоступности rest адаптера (при true недоставленные сообщения отбрасываются)
  #      discarding_threshold: 20 # процент свободного места в очереди отправки сообщений при достижении которого будут удаляться сообщения уровня TRACE, DEBUG, INFO
  #      queue_size: 512 # размер очереди для отправки
  #  kafka:
  #    topic: <topic_name> # Наименование топика
  #    retries: 3 # Количество переиницилизаций продюсера
  #    interval: 1000 # Интервал между переиницилизациями
  #    multiplier: 1 # Множитель интервала переинициализации
  #    properties:
  #      "bootstrap.servers": "hostname-1:9092,hostname-2:9092" # Bootstrap подключения к Apache Kafka вида host:port,host2:port2
  #      "client.id": "scheduler" # Client id для подключения
  #      "config.providers": decode # Объявление провайдера шифрования паролей. Значение не изменять
  #      "config.providers.decode.class": ru.sbt.ss.kafka.DecryptionConfigProvider # Класс провайдера шифрования паролей. Значение не изменять
  #      "config.providers.decode.param.security.encoding.key": ssl/secret.pass # Путь до файла, содержащего ключ шифрования паролей
  #      "config.providers.decode.param.security.encoding.class": ru.sbt.ss.password.BaseEncryptor # Класс шифрования паролей. Значение не изменять
  #      "security.protocol": SSL # Тип протокола подключения. Значение по умолчанию: SSL
  #      "ssl.endpoint.identification.algorithm": "" # Обязательный параметр. Значение "" не изменяемое. Отключение проверки хостнейма в сертификате, обязательно для стендов кафки
  #      "ssl.keystore.location": "/path/to/*.jks" # Путь до хранилища сертификатов, для отправки логов в kafka
  #      "ssl.truststore.location": "/path/to/*.jks" # Путь до truststore
  #      "ssl.keystore.password": <password> Пароль от keystore
  #      "ssl.truststore.password": <password> # Пароль от truststore
  #      "ssl.key.password": <password> # Пароль для key.password

#  vaultConfigsFile: # Настройки подключения к Vault, помещаются в файл из параметра vault.properties.file
#    security.encoding.class: ru.sbt.ss.password.BaseEncryptor # Класс шифрования паролей
#    security.encoding.key: file:ssl/secret.pass # Путь до файла с ключом шифрования
#    ssl.vault.address: https:/host:port # Адрес vault-сервера
#    ssl.vault.namespace: "" # Используемое пространство в vault
#    ssl.vault.tls.enable: "true" # Включение/выключение безопасного подключения к vault
#    ssl.vault.tls.keystore.location: ssl/vault-client.jks
#    ssl.vault.tls.keystore.password: "{{ jks_password }}"
#    ssl.vault.tls.key.password: "{{ jks_password }}"
#    ssl.vault.tls.truststore.location: ssl/vault-client.jks # Хранилище доверенных сертификатов для безопасного подключения к vault
#    ssl.vault.tls.truststore.password: "{{ jks_password }}"  # Пароль от хранилища доверенных сертификатов
#    ssl.endpoint.identification.algorithm: "" # Отключение проверки хостнейма в сертификате
#    ssl.vault.auth.type: approle # Тип аутентификации
#    ssl.vault.auth.role.id: role.id # Role ID для типа аутентификации approle
#    ssl.vault.auth.secret.id: secret.id # Secret ID для типа аутентификации approle
#    ssl.vault.pki.mount: "pki" # Путь до API движка выпуска сертификатов в Vault pki
#    ssl.vault.pki.role.name: default # Имя роли в PKI Engine
#    ssl.vault.pki.common.name: EVPT-logback # Common name (CN) для генерации сертификатов
#    ssl.vault.pki.email: vasya@rambler.ru # Email для генерации сертификатов
#    ssl.keystore.location: ssl/vault-keystore.jks # Путь до keystore хранилища
#    ssl.keystore.mode: 600 # Права для keystore хранилища на файловой системе
#    ssl.truststore.location: ssl/vault-truststore.jks # Путь до truststore хранилища
#    ssl.truststore.mode: 600 # Права для keystore хранилища на файловой системе
#    ssl.vault.secret.path: kv1/certstore # Секретный путь для паролей от ключа, keystore и truststore
#    ssl.vault.engine.version: 1 # Версия API для key-value машины
#    ssl.vault.secret.key: password # Secret key для пароля от ключа
#    ssl.vault.secret.keystore: password # Secret key для пароль от keystore
#    ssl.vault.secret.truststore: password # Secret key для пароля от truststore

  routeHostName: apps.stands-vdc01.solution.sbt # Имя хоста для роута
  ingress:
    create: false
    name: ''
    hostName: '' # суффикс роута/ингресса
    ssl: false
    ingressClassName: ''
    annotations: {}
    # Openshift
    # openshift.io/host.generated: 'true'
    # haproxy.router.openshift.io/balance: roundrobin
    # Kubernetes
    # haproxy-ingress.github.io/ssl-passthrough: 'true'
    # ingress.kubernetes.io/rewrite-target: '/' # не включает endpoint в запрос (/server/clean -> /clean)
  quartz: # Дополнительные настройки quartz
    properties:  # Database properties
    org.quartz.jobStore.class: "org.выquartz.impl.jdbcjobstore.JobStoreTX" # Селектор JobStore
    org.quartz.jobStore.dataSource: "quartzDataSource" # Значением этого свойства должно быть имя одного из источников данных, определенных в файле свойств конфигурации
    org.quartz.jobStore.tablePrefix: "QRTZ_" # Строка, равная префиксу, присвоенному таблицам Quartz, которые были созданы в вашей базе данных. У вас может быть несколько наборов таблиц Quartz в одной базе данных, если они используют разные префиксы таблиц.
    org.quartz.jobStore.driverDelegateClass: "org.quartz.impl.jdbcjobstore.PostgreSQLDelegate" # Конкретный «диалект» различных систем баз данных.
    org.quartz.dataSource.quartzDataSource.driver: "org.postgresql.Driver" # Стандартная настройка библиотеки quartz
    org.quartz.dataSource.quartzDataSource.URL: "jdbc:postgresql://localhost:5432/scheduler" # URL подключения к БД
    org.quartz.dataSource.quartzDataSource.user: "user" # Пользователь для подключения к БД
    org.quartz.dataSource.quartzDataSource.password: "password" # Пароль для пользователя
    # Non-database specific properties
    org.quartz.scheduler.instanceName: "DatabaseScheduler" # Имя инстанса шедулера (будет использоваться только если имеется несколько шедулеров, работающих с одной и той же базой, тогда у них должно совпадать значение этого параметра)
    org.quartz.scheduler.instanceId: "EXAMPLE_INSTANCE" # Идентификатор инстанса шедулера (будет использоваться только если имеется несколько шедулеров, работающих с одной и той же базой, тогда у них не должно совпадать значение этого параметра. Можно использовать значение "AUTO" в качестве идентификатора экземпляра, если хотите, чтобы идентификатор был сгенерирован.)
    org.quartz.scheduler.skipUpdateCheck: "true" # Следует ли пропустить запуск быстрого веб-запроса, чтобы определить, доступна ли обновленная версия Quartz для загрузки. Если проверка будет выполнена и обновление будет найдено, оно будет указано как доступное в логах.
  # Настройки хранилища (storage)
  #  storage:
  #    type: kafka # Тип хранилища
  #    bootstrap.servers: "localhost:9092" # Адреса серверов Kafka
  #    group.id: "test-group" # Идентификатор группы
  #    auto.offset.reset: "earliest" # Поведение при сбросе смещения
  #    topic: "test" # Имя используемого топика
  # Настройки хранилища для компактного топика (storage)
  #  storage:
  #    type: compactKafka # Тип хранилища
  #    topic: "test" # Имя используемого топика
  #    timeout: 10000 # Таймаут для клиента Кафки
  #    bootstrap.servers: "localhost:9092" # Адреса серверов Kafka
  #    group.id: "test-group" # Идентификатор группы
  #    auto.offset.reset: "earliest" # Поведение при сбросе смещения
  
  audit:   # Параметры аудита
    audit.service.type: log  # Логирование событий

  #    Отправка событий в ТС Аудит
  #    audit.service.type: http
  #
  #    Идентификатор узла
  #    "audit.service.node.id": "hostname-1"
  #    Название инсталляции
  #    "audit.service.source.system": "source.system"
  #
  #    Параметры подключения к ТС Аудит
  #    "audit.service.url.base": "http://ext-http.audit2-http-proxy.apps.stands-vdc01.solution.sbt"
  #    "audit.service.url.event.path": "/v1/event"
  #    "audit.service.url.metamodel.path": "/v1/metamodel"
  #
  #    Параметры SSL для подключения к ТС Аудит
  #    "audit.service.ssl.enabled": "false"
  #    "audit.service.ssl.keystore": "keystore.jks"
  #    "audit.service.ssl.keystore.password": "password"
  #    "audit.service.ssl.key.password": "password"
  #    "audit.service.ssl.truststore": "truststore.jks"
  #    "audit.service.ssl.truststore.password": "password"
  #    "audit.service.ssl.protocol": "TLSv1.2"
  #    "audit.service.ssl.verify.hostname": "false"
  #
  #    Параметры метамодели событий аудита
  #    Путь до метамодели (можно не указывать, по умолчанию метамодель загружается из ресурсов приложения)
  #    "audit.service.audit.service.metamodel.path": ""
  #    Отправлять метамодель при старте приложения
  #    "audit.service.send.metamodel": "true"
  #    Переопределить module.id метамодели
  #    "audit.service.metamodel.module = Scheduler
  #    Переопределить версию метамодели
  #    "audit.service.metamodel.version = 1.0
  #
  #    Параметры переотправки событий аудита
  #    "audit.service.redelivery.enabled": "true"
  #    "audit.service.add.redelivery.headers": "true"
  #
  #    "audit.service.redelivery.buffers": "in-memory-buffer"
  #    "audit.service.redelivery.in-memory-buffer.type": "queue"
  #    "audit.service.redelivery.in-memory-buffer.max.size": "10k"
  #    "audit.service.redelivery.in-memory-buffer.clear.logger.name": "memory"

  #    ## Настройка kafka-транспорта для событий аудита
  #    audit.service.transport.type: kafka # Тип транспорта, http или kafka, по умолчанию http
  #    audit.service.metamodel.topic: metamodel-topic # Имя топика для отправки метамодели
  #    audit.service.event.topic: event-topic # Имя топика для отправки событий
  #    audit.service.kafka.bootstrap.servers: "localhost:9093" # Адреса kafka
  #    ## ОПЦИОНАЛЬНО Сериализаторы (по умолчанию org.apache.kafka.common.serialization.StringSerializer)
  #    audit.service.kafka.key.serializer: org.apache.kafka.common.serialization.StringSerializer
  #    audit.service.kafka.value.serializer: org.apache.kafka.common.serialization.StringSerializer
  #    ## ОПЦИОНАЛЬНО идентификатор клиента
  #    audit.service.kafka.client.id: audit-producer
  #    ## ОПЦИОНАЛЬНО настройки ssl
  #    audit.service.kafka.security.protocol: SSL
  #    audit.service.kafka.ssl.keystore.location: ssl/keystore.jks
  #    audit.service.kafka.ssl.keystore.password: password
  #    audit.service.kafka.ssl.truststore.location: ssl/truststore.jks
  #    audit.service.kafka.ssl.truststore.password: password
  #    audit.service.kafka.ssl.endpoint.identification.algorithm: ""

    # "audit.service.request.timeout.ms": "30000" # Максимальное время требуемое на отправку события аудита
    #  audit.service.ssl.vault.pem.trust.path: kv1/kvtrust # Путь до Key-Value секрета c доверенными сертификатами в формате PEM
    #  audit.service.ssl.vault.pem.trust.aliases: ca1, ca2 # Список ключей в секрете, содержимое которых необходимо загрузить в хранилище доверенных сертификатов
    #    Конфигурация аудита для получения сертификатов из HashiCorp Vault
    #    audit.service.ssl.keystore.location: ${vault:ssl.keystore.location} # Путь до keystore хранилища сертификата, где будет размещен сертификат сгенерированный Vault
    #    audit.service.ssl.truststore.location: ${vault:ssl.truststore.location} # Путь до truststore хранилища
    #    audit.service.ssl.keystore.mode: 600 # Права для keystore хранилища
    #    audit.service.ssl.truststore.mode: 600 # Права для truststore хранилища
    #    audit.service.ssl.vault.address: https:/host:port # HashiCorp Vault URL.
    #    audit.service.ssl.vault.pki.role.name: <role_name> # Имя роли в PKI Engine
    #    audit.service.ssl.vault.pki.common.name: <common_name> # Common name (CN) для генерации сертификатов
    #    audit.service.ssl.vault.pki.mount: "" # Путь до API движка выпуска сертификатов в Vault pki 
    #    audit.service.ssl.vault.pki.email: email@example.com # Email для генерации сертификатов
    #    audit.service.ssl.vault.namespace: "" # Используемое пространство в vault
    #    audit.service.ssl.vault.auth.type: approle # Тип аутентификации в vault
    #    audit.service.ssl.vault.auth.role.id: <role_id> # Role ID для типа аутентификации approle
    #    audit.service.ssl.vault.auth.secret.id: "{{ vault_secret }}" # Secret ID для типа аутентификации approle
    #    audit.service.ssl.vault.tls.enable: "true" # Наличие защищенного соединения с HashiCorp Vault
    #    audit.service.ssl.vault.tls.truststore.location: /path/to/*.jks # Путь до truststore хранилища
    #    audit.service.ssl.vault.tls.truststore.password: "{{ jks_password }}" # Пароль от truststore хранилища
    #    audit.service.ssl.vault.engine.version: 1 # Версия API для key-value машины
    #    audit.service.ssl.vault.secret.path: path/to/certstore # Секретный путь для ключа, keystore и truststore паролей
    #    audit.service.ssl.vault.secret.key: key # Secret key для пароля ключа
    #    audit.service.ssl.vault.secret.keystore: keystore # Secret key для keystore пароля
    #    audit.service.ssl.vault.secret.truststore: truststore # Secret key для truststore пароля
    #    audit.service.ssl.vault.pem.trust.path: kv1/kvtrust # Путь до Key-Value секрета c доверенными сертификатами в формате PEM
    #    audit.service.ssl.vault.pem.trust.aliases: ca1, ca2 # Список ключей в секрете, содержимое которых необходимо загрузить в хранилище доверенных сертификатов
    #    audit.service.redelivery.memory.type: queue # Тип буфера
    #    audit.service.redelivery.memory.max.size: 100m # Максимальный размер буфера, может быть установлен в гига/мега/кило/байтах,например: 1024, 1024b, 100k, 10m, 1g, -1 для неограниченного размера
    #    audit.service.redelivery.kafka-buffer.ssl.keystore.location: ${vault:ssl.keystore.location} # Путь до keystore хранилища сертификата, где будет размещен сертификат сгенерированный Vault
    #    audit.service.redelivery.kafka-buffer.ssl.truststore.location: ${vault:ssl.truststore.location} # Путь до truststore хранилища
    #    audit.service.redelivery.kafka-buffer.ssl.endpoint.identification.algorithm: "" # Обязательный параметр. Значение "" неизменяемое. Отключение проверки хостнейма в сертификате, обязательно для стендов Kafka
    #    '"audit.service.redelivery.kafka-buffer.config.providers"': vault # Обязательно в кавычках
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.class: ru.sbt.ss.kafka.VaultConfigProvider # Объявление провайдера шифрования паролей. Значение не изменять
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.security.encoding.class: ru.sbt.ss.password.BaseEncryptor # Значение не изменяется. Используемый класс для расшифровки пароля
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.security.encoding.key: file:path/to/encrypt.pass # Путь до файла, содержащего ключ шифрования паролей
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.address: https:/host:port # HashiCorp Vault URL.
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.tls.enable: "true" # Наличие защищенного соединения с HashiCorp Vault
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.tls.truststore.location:
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.tls.truststore.password: "{{ jks_password }}" # Пароль от truststore хранилища
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.endpoint.identification.algorithm: "" # Обязательный параметр. Значение "" неизменяемое. Отключение проверки хостнейма в сертификате, обязательно для стендов Kafka
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.auth.type: approle # Тип аутентификации. Доступные значения: approle, token, password, cert
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.auth.role.id: <role_id> # Role ID для типа аутентификации approle
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.auth.secret.id: "{{ vault_secret }}" # Secret ID для типа аутентификации approle
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.pki.mount: "" # Путь до API движка выпуска сертификатов в Vault pki 
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.pki.role.name: <role_name> # Имя роли в PKI Engine
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.pki.common.name: <common_name> # Common name (CN) для генерации сертификатов
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.keystore.location: ${vault:ssl.keystore.location} # Путь до keystore хранилища сертификата, где будет размещен сертификат сгенерированный Vault
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.truststore.location:${vault:ssl.truststore.location} # Путь до truststore хранилища
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.secret.path: path/to/certstore # Секретный путь для ключа, keystore и truststore паролей
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.engine.version: 1 # Версия API для key-value машины
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.secret.key: key # Secret key для пароля ключа
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.secret.keystore: keystore # Secret key для keystore пароля
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.secret.truststore: truststore # Secret key для truststore пароля
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.pki.email: email@example.com # Email для генерации сертификатов
    #    audit.service.redelivery.kafka-buffer.config.providers.vault.param.ssl.vault.namespace: "" # Используемое пространство в vault

    # Пример использования для файлового буфера:
    #    audit.service.redelivery.file-buffer.type: file # Тип буфера
    #    audit.service.redelivery.file-buffer.file.name: buffers/redelivery.txt # Используемый файл
    #    audit.service.redelivery.file-buffer.encryption.enabled: true # Включить шифрование событий
    #    audit.service.redelivery.file-buffer.encryption.class: ru.sbt.ss.password.BaseEncryptor # ОПЦИОНАЛЬНО Указать класс шифрования, по умолчанию ru.sbt.ss.password.BaseEncryptor
    #    audit.service.redelivery.file-buffer.encryption.encrypt.key: file:ssl/secret.pass # Ключ шифрования (encrypt.key)
    #    audit.service.redelivery.file-buffer.encryption.encrypt.algorithm: PBEWithHmacSHA512AndAES_256 # Алгоритм шифрования (algorithm), по умолчанию PBEWithHmacSHA512AndAES_256

istio: # настройки манифестов Istio
    peerAuthentication:
      create: false
#      name: peer-auth-0
#      mtls_mode: PERMISSIVE # UNSET (default) | DISABLE | PERMISSIVE | STRICT
    ingress:
      create: false
      hostName: '' # суффикс роута/ингресса
      #ingressClassName: ''
      annotations: {}
        # Openshift
        # openshift.io/host.generated: 'true'
        # haproxy.router.openshift.io/balance: roundrobin
        # Kubernetes
        # haproxy-ingress.github.io/ssl-passthrough: 'true' # если есть tls
        # ingress.kubernetes.io/rewrite-target: '/' # не включает endpoint в запрос (/server/clean -> /clean)
      #targetService: ''
      #targetPortName: ''
      #targetPortNumber: ''
      gateway:
        name: ingressgateway
        create: false
        selector:
          app: ingressgateway
          istio: ingressgateway
        tls:
          caCertificates: /vault/ingress/ca.pem
          mode: MUTUAL
          privateKey: /vault/ingress/key.pem
          serverCertificate: /vault/ingress/crt.pem
      service:
        create: false
        name: ingressgateway-svc
        selector:
          app: ingressgateway
          istio: ingressgateway
      virtualService:
        create: false
        name: ingress-vs
      destinationRule:
        create: false
        name: ingress-dr
#       outlierDetection:
#         consecutive5xxErrors: 5
#         interval: 5m
#         baseEjectionTime: 5m
#         maxEjectionPercent: 50
      deployment:
        create: false # создавать ли Deployment для istio ingressgateway
        readinessProbe: {}
        #  initialDelaySeconds: 1
        #  timeoutSeconds: 1
        #  periodSeconds: 2
        #  successThreshold: 1
        #  failureThreshold: 30
        name: evpt-ingressgateway
        # resources:
        #   limits:
        #     cpu: 0.1
        #     memory: 128M
        #   requests:
        #     cpu: 0.1
        #     memory: 64M
        annotations:
          sidecar.istio.io/inject: 'false'
          # # Дополнительные аннотации для граничного прокси. Здесь можно описать импорт сертификатов из vault/secman
          # vault.hashicorp.com/agent-inject-secret-ca.pem: 'true'
          # vault.hashicorp.com/secret-volume-path-ca.pem: /vault/ingress
          # vault.hashicorp.com/namespace: DEV_example
          # vault.hashicorp.com/role: role-ga-secman-eda
          # vault.hashicorp.com/secret-volume-path-key.pem: /vault/ingress
          # vault.hashicorp.com/agent-inject: 'true'
          # vault.hashicorp.com/agent-inject-secret-key.pem: 'true'
          # vault.hashicorp.com/agent-init-first: 'true'
          # vault.hashicorp.com/agent-limits-cpu: 100m
          # vault.hashicorp.com/agent-requests-cpu: 100m
          # vault.hashicorp.com/secret-volume-path-crt.pem: /vault/ingress
          # vault.hashicorp.com/agent-inject-secret-crt.pem: 'true'
          # vault.hashicorp.com/agent-inject-template-key.pem: |
          #   {%- raw %}
          #   {{- with secret "PKI/issue/role-ga-secman-eda"
          #   "common_name=evpt.eda.solution.sbt" "format=pem" "ttl=20h"
          #   "private_key_format=pkcs8" -}}
          #   {{ .Data.private_key }}
          #   {{- end }}
          #   {%- endraw %}
          # vault.hashicorp.com/agent-inject-template-ca.pem: |
          #   {%- raw %}
          #   {{- with secret "PKI/issue/role-ga-secman-eda"
          #   "common_name=evpt.eda.solution.sbt" "format=pem" "ttl=20h"
          #   "private_key_format=pkcs8" -}}
          #   {{- range $idx, $cert := .Data.ca_chain }}
          #   {{ $cert }}
          #   {{- end }}
          #   {{- end }}
          #   {%- endraw %}
          # vault.hashicorp.com/agent-inject-template-crt.pem: |
          #   {%- raw %}
          #   {{- with secret "PKI/issue/role-ga-secman-eda"
          #   "common_name=evpt.eda.solution.sbt" "format=pem" "ttl=20h"
          #   "private_key_format=pkcs8" -}}
          #   {{ .Data.certificate }}
          #   {{- end }}
          #   {%- endraw %}
        labels: {}
        #  secman-injector: enabled # лейбл для активации интеграции с secman vault agent injector
        istioDiscoveryService: istiod # название discovery сервиса панели истио к которой подключен ваш неймспейс
        istioControlPlane: control-plane-01 # название неймспейса контрольной панели истио к которой подключен ваш неймспейс
        proxyImage: image # ссылка на образ граничного прокси (IGEG)
    egress:
      deployment:
        create: false # создавать ли Deployment для istio egressgateway
        name: evpt-egressgateway
        # resources:
        #   limits:
        #     cpu: 0.1
        #     memory: 128M
        #   requests:
        #     cpu: 0.1
        #     memory: 64M
        annotations:
          sidecar.istio.io/inject: 'false'
          # # Дополнительные аннотации для граничного прокси. Здесь можно описать импорт сертификатов из vault/secman
          # vault.hashicorp.com/agent-inject-template-cert.pem: |
          #   {%- raw %}
          #   {{- with secret "A/DEV/SY/EVTD/KV/example-audit-cert" -}}
          #   {{ index .Data "cert" }}
          #   {{- end }}
          #   {%- endraw %}
          # vault.hashicorp.com/agent-inject-secret-ca.pem: 'true'
          # vault.hashicorp.com/secret-volume-path-ca.pem: /vault
          # vault.hashicorp.com/namespace: DEV_example
          # vault.hashicorp.com/role: role-ga-secman-eda
          # vault.hashicorp.com/agent-inject-secret-cert.pem: 'true'
          # vault.hashicorp.com/secret-volume-path-key.pem: /vault
          # vault.hashicorp.com/agent-inject: 'true'
          # vault.hashicorp.com/secret-volume-path-cert.pem: /vault
          # vault.hashicorp.com/agent-inject-secret-key.pem: 'true'
          # vault.hashicorp.com/agent-init-first: 'true'
          # vault.hashicorp.com/agent-limits-cpu: 200m
          # vault.hashicorp.com/agent-requests-cpu: 200m
          # vault.hashicorp.com/agent-inject-template-key.pem: |
          #   {%- raw %}
          #   {{- with secret "A/DEV/SY/EVTD/KV/example-audit-cert" -}}
          #   {{ index .Data "key" }}
          #   {{- end }}
          #   {%- endraw %}
          # vault.hashicorp.com/agent-inject-template-ca.pem: |
          #   {%- raw %}
          #   {{- with secret "A/DEV/SY/EVTD/KV/example-audit-cert" -}}
          #   {{ index .Data "ca" }}
          #   {{- end }}
          #   {%- endraw %}
        labels: {}
        #  secman-injector: enabled # лейбл для активации интеграции с secman vault agent injector
        istioDiscoveryService: istiod # название discovery сервиса панели истио к которой подключен ваш неймспейс
        istioControlPlane: control-plane-01 # название неймспейса контрольной панели истио к которой подключен ваш неймспейс
        proxyImage: image # ссылка на образ граничного прокси (IGEG)
    egressService: # параметры сервиса Egress
      #      name: "egressgateway0-svc" # имя сервиса Egress
      create: false # создавать ли манифест сервиса
    #      internalPort: 9443 # внутренний порт Egress
    #      selector: # содержимое поля spec.selector в манифесте сервиса
    #        app: egressgateway-tribe-sy-synes-dev
    #        istio: egressgateway-tribe-sy-synes-dev
    gateway: # параметры манифеста Gateway для Istio Egress
      #  name: egressgateway0-gw # имя манифеста
      create: false # создавать ли манифест
      #  selector: # содержимое поля spec.selector в манифесте
      #  istio: egressgateway-tribe-sy-synes-dev
      destinationRule:
        #     name: egressgateway0-dr
        create: false
      #      tls:
      #        mode: MUTUAL # DISABLE | SIMPLE | MUTUAL (own certs) | ISTIO_MUTUAL (control plane certs)
      #        caCertificates: /path/to/egress/certificates/ca-chain.cert.pem
      #        clientCertificate: /path/to/egress/certificates/tls.crt
      #        privateKey: /path/to/egress/certificates/tls.key
      #      outlierDetection:
      #        consecutive5xxErrors: 5
      #        interval: 5m
      #        baseEjectionTime: 5m
      #        maxEjectionPercent: 50
      # # После задания параметров перенаправления для kafka, из прикладного приложения к bootstrap серверу нужно обращаться на хост следующего формата:
  # # {название_сервиса_egressgateway}.{имя_неймспейса}.svc.cluster.local:{gwPort_для_кафки_указываемый_ниже}
    kafka: [] # параметры для направления kafka трафика через istio egressgateway. Можно указать список bootstrap серверов кафки
  #  - hosts: bootstrap.server1.host:9093,bootstrap.server2.host:9093 # хост и порт bootstrap серверов кафки. Если кластер, можно указать несколько. Разделитель ","
  #    gwPort: 10092 # порт сервиса egressgateway по которому будет доступна кафка изнутри неймспейса
  #    gwTls:
  #      mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
  #    destinationRule: # параметры для манифеста DestinationRule Istio для кафки
  #      create: true # создавать ли манифест
  #      outlierDetection:
  #        consecutive5xxErrors: 5
  #        interval: 5m
  #        baseEjectionTime: 5m
  #        maxEjectionPercent: 50
  #      tls:
  #        mode: MUTUAL
  #        clientCertificate: /path/to/egress/certificates/ca-chain.cert.pem
  #        privateKey: /path/to/egress/certificates/tls.crt
  #        caCertificates: /path/to/egress/certificates/tls.key
  #    virtualService: # параметры для манифеста VirtualService для кафки
  #      create: true # создавать ли манифест
    vault: # параметры для интеграции с HashiCorp Vault
  #      host: srv-68-6.sy.dev.sbt # хост сервиса HashiCorp Vault
  #      port: 8200 # порт сервиса HashiCorp Vault
  #    externalPort: 8200 # порт сервиса HashiCorp Vault
  #    # Порты и протоколы ниже используются в манифестах VirtualService, Gateway, Gateway Service
  #    # Поддерживаемые gwSvc протоколы - "SCTP", "TCP", "UDP"
  #    gwPort: 9444 # порт на egressGateway
  #    gwProtocol: TLS # протокол на egressGateway
  #    gwSvcProtocol: TCP # протокол на service egressGateway
  #    gwTls:
  #      mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
      destinationRule: # параметры для манифеста DestinationRule Istio
        #        name: epf-vault-dr # имя манифеста
        create: false # создавать ли манифест
      #        tls: # параметры TLS в манифесте spec.trafficPolicy.portLevelSettings[0].tls
      #          mode: MUTUAL
      #          caCertificates: /path/to/egress/certificates/ca-chain.cert.pem
      #          clientCertificate: /path/to/egress/certificates/tls.crt
      #          privateKey: /path/to/egress/certificates/tls.key
      #          sni: vault.host
      virtualService: # параметры для манифеста VirtualService
      #      name: scheduler-vault-vs # имя манифеста
      #      protocol: http # протокол для создания virtual service. Валидные значения: http, tls, tcp
        create: false # создавать ли манифест VirtualService
    audit: # параметры для интеграции с сервисом Аудита
      #      host: ext-http.audit2-http-proxy.apps.stands-vdc01.solution.sbt # хост сервиса Аудита
      #      port: 80 # порт сервиса Аудита
      #    externalPort: 443 # порт сервиса Аудита
      #    # Порты и протоколы ниже используются в манифестах VirtualService, Gateway, Gateway Service
      #    # Поддерживаемые gwSvc протоколы - "SCTP", "TCP", "UDP"
      #    gwPort: 9443 # порт на egressGateway
      #    gwProtocol: HTTP # протокол на egressGateway
      #    gwSvcProtocol: TCP # протокол на service egressGateway
      #    gwTls:
      #      mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
      destinationRule: # параметры для манифеста DestinationRule Istio
        #        name: epf-audit-dr # имя манифеста
        create: false # создавать ли манифест
        # tls: # параметры TLS в манифесте spec.trafficPolicy.portLevelSettings[0].tls
        #   mode: MUTUAL
        #   caCertificates: /path/to/egress/certificates/ca-chain.cert.pem
        #   clientCertificate: /path/to/egress/certificates/tls.crt
        #   privateKey: /path/to/egress/certificates/tls.key
      virtualService: # параметры для манифеста VirtualService
        #      name: epf-audit-vs # имя манифеста
        #      protocol: http # протокол для создания virtual service. Валидные значения: http, tls, tcp
        create: false # создавать ли манифест VirtualService
    telemetry: # параметры для интеграции с OpenTelemetry
#      host: telemetry.url # хост сервиса OpenTelemetry
#      port: 80 # порт сервиса OpenTelemetry для обращения из pod'а
#      externalPort: 443 # порт сервиса OpenTelemetry
#      # Порты и протоколы ниже используются в манифестах VirtualService, Gateway, Gateway Service
#      # Поддерживаемые gwSvc протоколы - "SCTP", "TCP", "UDP"
#      gwPort: 9449 # порт на egressGateway
#      gwProtocol: HTTP # протокол на egressGateway
#      gwSvcProtocol: TCP # протокол на service egressGateway
#      gwTls:
#        mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
      destinationRule: # параметры для манифеста DestinationRule Istio
        name: telemetry-dr # имя манифеста
        create: false # создавать ли манифест
#        tls:
#          mode: MUTUAL
#          caCertificates: /path/to/egress/certificates/ca-chain.cert.pem
#          clientCertificate: /path/to/egress/certificates/tls.crt
#          privateKey: /path/to/egress/certificates/tls.key
#        outlierDetection:
#          consecutive5xxErrors: 5
#          interval: 5m
#          baseEjectionTime: 5m
#          maxEjectionPercent: 50
      virtualService: # параметры для манифеста VirtualService
        name: telemetry-vs # имя манифеста
        protocol: http # протокол для создания virtual service. Валидные значения: http, tls, tcp
        create: false # создавать ли манифест VirtualService

   postgres: # настройки манифестов Istio для работы с базой данных
#      - host: postgres.host # хост сервиса Postgres; указывать валидный SAN из сертификата
#        port: 5432 # порт сервиса Postgres для обращения из pod'а
#        externalPort: 5432 # порт сервиса Postgres
#        # Порты и протоколы ниже используются в манифестах VirtualService, Gateway, Gateway Service
#        # Поддерживаемые gwSvc протоколы - "SCTP", "TCP", "UDP"
#        gwPort: 9445 # порт на egressGateway
#        gwProtocol: TCP # протокол на egressGateway
#        gwSvcProtocol: TCP # протокол на service egressGateway
#        gwTls:
#          mode: ISTIO_MUTUAL # Валидные значения: "PASSTHROUGH", "SIMPLE", "MUTUAL", "AUTO_PASSTHROUGH", "ISTIO_MUTUAL", "OPTIONAL_MUTUAL"
      destinationRule:
        create: false # создавать ли манифест
#        tls:
#          mode: MUTUAL # DISABLE | SIMPLE | MUTUAL (own certs) | ISTIO_MUTUAL (control plane certs)
#          caCertificates: /path/to/egress/certificates/ca-chain.cert.pem
#          clientCertificate: /path/to/egress/certificates/tls.crt
#          privateKey: /path/to/egress/certificates/tls.key
#        outlierDetection:
#          consecutive5xxErrors: 5
#          interval: 5m
#          baseEjectionTime: 5m
#          maxEjectionPercent: 50
      virtualService: # параметры для манифеста VirtualService
        create: false # создавать ли манифест VirtualService
   # Массив serviceEntry, которые нужно создать
   # Для postgres указать протокол postgres, а не tcp
#    serviceEntry:
#      - host: my_hostname
#        port:
#          name: tcp-kafka
#          number: 9092
#          protocol: TCP
#        resolution: DNS
#        annotations: # расскомментировать если нужно чтобы serviceEntry осталась после helm uninstall
#          "helm.sh/resource-policy": keep
#      - host: my_hostname_2
#        addresses: { IP_ADDRESS }
#        port:
#          name: tcp-kafka
#          number: 9092
#          protocol: TCP
#        resolution: STATIC
#      - host: my_hostname_3
#        port:
#          name: tcp-kafka
#          number: 9092
#          protocol: TCP
#        resolution: NONE

# Файл настроек для playbook DB
db:
  host: localhost # адрес БД
  database: batch # наименовнавие БД
  schema: public # схема БД
  username: __PLACEHOLDER__ # пользователь БД
  password: __PLACEHOLDER__ # пароль БД
  ssl:
    enabled: false # включение/выключение SSL соединения
    keystore_path: ssl/test.jks # путь до keystore относительно inventory
    keystore_password: __PLACEHOLDER__ # пароль от keystore
    truststore_path: ssl/test.jks # Путь до truststore
    truststore_password: __PLACEHOLDER__ # пароль от truststore
    key: __PLACEHOLDER__ # key для truststore пароля

При необходимости раскомментировать нужные блоки.