Служба управления конфигурациями "Осмакс"

Руководство по установке

Версия 1.8.0

Содержание

    Общие сведения

    Руководство включает полное поэтапное описание процесса установки продукта «Служба управления конфигурациями "Осмакс"» на операционные системы:

    • Astra Linux Special Edition версии 1.7.3 и выше;

    • РЕД ОС версии 7.3.

    Подготовка к установке

    На этапе подготовки к установке:

    1. Убедитесь, что на серверах установлено прикладное программное обеспечение требуемой версии согласно схеме развертывания.

    2. Выполните настройку окружения.

    3. Убедитесь, что у вас есть доступ к дистрибутиву продукта требуемой версии.

    Требования к программному обеспечению

    Установка продукта возможна на операционных системах:

    • Astra Linux Special Edition версии не ниже 1.7.3 (лицензия: GNU General Public License от ООО «РусБИТехАстра»);

    • РЕД ОС версии 7.3.

    Убедитесь, что для выбранной ОС установлена подсистема инициализации systemd версии 245 и выше.

    Требования к системному и прикладному программному обеспечению приведены в таблице:

    Название Описание Версия Тип лицензии Правообладатель

    Apache Kafka

    Распределенная платформа для обработки потоков данных

    3.6.0 и выше

    Apache 2.0

    Open Source

    LDAP-сервер

    Сервер, который предоставляет доступ к каталогу объектов, таких как пользователи, группы, компьютеры и другие ресурсы в сети.

    Допускается использование любых серверов со стандартной схемой БД Microsoft (Active Directory Schema)

    «Служба каталогов» 1.1.0 и выше

    GPL-3.0 license

    ГК «Иннотех»

    Microsoft Windows Server 2012 (или более новый)

    Microsoft EULA

    Microsoft

    Unboundid LDAP 4.0.16

    GPL-2.0 license

    Open Source

    PostgreSQL

    СУБД для хранения и обработки данных продукта

    Не ниже 14.0

    PostgreSQL Licence

    Open Source

    S3-совместимое файловое хранилище

    Система хранения контента (например, Ceph, Minio и др.)

    Веб-сервер

    ПО, которое используется для обработки запросов от веб-браузеров и ответа на них, а также для предоставления доступа к веб-ресурсам, таким как веб-страницы, изображения, файлы и другие данные (например, Nginx)

    Настройка окружения

    Ниже приведены минимальные требования к настройке следующего программного обеспечения:

    Apache Kafka

    Создайте отдельный топик (например, salt-topic) для передачи данных с серверов управления (masters) в бэкенд продукта.

    Рекомендуемые параметры для топика:

    • retention — время, в течение которого сообщения будут храниться в топике до момента удаления;

    • partitions — способ физического разделения данных в топике на несколько частей.

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

    LDAP-сервер

    1. Создайте учетную запись для подключения и сканирования LDAP-сервера.

    2. Создайте учетную запись для валидации билетов Kerberos (можно использовать ту же учетную запись, что и в п.1).

    3. Создайте сервисную учетную запись Kerberos.

    4. Убедитесь, что все компьютеры, которые будут использоваться для работы с модулями «Кабинет администратора» и «Магазин приложений», находятся в составе домена под управлением службы каталогов (Active Directory Domain Services, Samba, FreeIPA или др.), использующей для проверки подлинности протокол Kerberos.

      При использовании PAM-аутентификации для корректной работы сервера управления (master) необходим root-доступ — полный доступ к системе, который предоставляется пользователю с правами администратора (root). Если аутентификация выполняется при помощи LDAP-сервера, то root-доступ необязателен.

      Для корректной работы агентов (minions) root-доступ обязателен.

      Для работы остальных компонентов продукта root-доступ не требуется.

    PostgreSQL

    1. Модуль inno-lcm-core:

      1. Создайте техническую учетную запись пользователя.

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

      3. Выдайте права пользователю на выполнение DDL-операций.

      4. Создайте дополнительного пользователя для доступа к схеме с правами только на чтение данных (read-only).

    2. Модуль inno-lcm-provisioner:

      1. Создайте техническую учетную запись пользователя.

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

      3. Выдайте права пользователю на выполнение DDL-операций.

    S3-совместимое файловое хранилище

    1. Создайте техническую учетную запись.

    2. Создайте бакеты для хранения:

      • формул модуля координации (SaltStack), например: salt-bucket;

      • данных хранилища Pillar модуля координации (SaltStack), например: pillar-bucket;

      • иконок, например: icons-bucket;

      • изображений и скриншотов, например: images-bucket;

      • прочего мультимедиа-контента, например: others-bucket;

      • исполняемых файлов (скриптов), предназначенных для установки агентов (minions) на устройства, например: script-bucket;

      • образов ISO, например: os-installation-iso-images-bucket.

    Состав дистрибутива

    Дистрибутив продукта распространяется в виде архивов в формате tar.gz, доступных для загрузки из репозитория:

    https://<repository.domain.name>/repository/<клиент>-<редакция>-raw-packages

    Доступ к репозиторию осуществляется с использованием учетной записи, полученной от ГК «Иннотех». Архивы в репозитории сгруппированы по версиям.

    Предоставляемые архивы:

    Архив с основными модулями (бэкенд, фронтенд, модуль «Удаленный доступ») и компонентами продукта

    Архив включает:

    • deb-пакеты, которые используются только при установке продукта на ОС Astra Linux:

      • inno-lcm-core — сборка бэкенда LCM, содержащая скомпилированный код для массовой установки ПО на устройствах и обработки полученных событий;

      • inno-lcm-provisioner — модуль, реализующий автоматическую установку операционной системы;

      • inno-lcm-webadmin — пользовательский интерфейс «Кабинет администратора»;

      • inno-lcm-app-shop — пользовательский интерфейс «Магазин приложений»;

      • inno-ira-tigervnc — VNC-пакет для работы модуля «Удаленный доступ» на агентах (minions);

      • inno-ira-openssh — SSH-пакет для работы модуля «Удаленный доступ» на агентах (minions);

      • inno-ira-xrdp — XRDP-пакет для работы модуля «Удаленный доступ» на агентах (minions);

      • inno-ira-guacamole-server — сервер шлюза удаленного доступа;

      • libinnovncserver — зависимый пакет компонента inno-ira-guacamole-server;

      • libinnofreerdp — зависимый пакет компонента inno-ira-guacamole-server;

      • inno-ira-guacamole-client — WEB-клиент шлюза удаленного доступа;

      • inno-ira-guacamole-schema — БД удаленного доступа;

    • rpm-пакеты, которые используются только при установке продукта на РЕД ОС:

      • inno-lcm-core — сборка бэкенда LCM, содержащая скомпилированный код для массовой установки ПО на устройствах и обработки полученных событий;

      • inno-lcm-provisioner — модуль, реализующий автоматическую установку операционной системы;

      • inno-lcm-webadmin — пользовательский интерфейс «Кабинет администратора»;

      • inno-lcm-app-shop — пользовательский интерфейс «Магазин приложений»;

    • confluent_kafka — wheel-пакет для работы с Kafka Returner (используется только при установке продукта на РЕД ОС);

      • inno-ira-tigervnc — VNC-пакет для работы модуля «Удаленный доступ» на агентах (minions);

      • inno-ira-openssh — SSH-пакет для работы модуля «Удаленный доступ» на агентах (minions);

      • inno-ira-xrdp — XRDP-пакет для работы модуля «Удаленный доступ» на агентах (minions);

      • inno-ira-guacamole-server — сервер шлюза удаленного доступа;

      • libinnovncserver — зависимый пакет компонента inno-ira-guacamole-server;

      • libinnofreerdp — зависимый пакет компонента inno-ira-guacamole-server;

      • inno-ira-guacamole-client — WEB-клиент шлюза удаленного доступа;

      • inno-ira-guacamole-schema — БД удаленного доступа;

    • файлы:

      • kafka_return_custom.py — файл с инструментом, который перенаправляет сообщения от агентов в топик Kafka;

      • CHANGELOG.md — файл, содержащий журнал изменений проекта в виде упорядоченного списка версий продукта с датами их выхода и описанием;

      • lcm-doc — файлы в формате PDF с сопроводительной документацией, соответствующей версии продукта.

    Архив с модулем координации (SaltStack)

    Архив включает:

    • deb-пакеты, которые используются только при установке продукта на ОС Astra Linux:

      • inno-lcm-salt-formulas — пакет с формулами — специальными шаблонами для установки ПО на устройствах;

      • salt-api — пакет, предоставляющий REST API для SaltStack;

      • salt-common — пакет, содержащий библиотеки, необходимые для работы SaltStack;

      • salt-master — пакет для установки сервера управления (master), который управляет всеми агентами (minions) в инфраструктуре;

      • salt-minion — пакет для установки агентов (minions) на удаленных серверах;

      • salt-cloud — пакет для управления облачными провайдерами (опциональный модуль);

      • salt-dbg — пакет для отладки установки и поиска ошибок в настройках (опциональный модуль);

      • salt-ssh — пакет для взаимодействия с агентами (minions) через протокол SSH, который может использоваться в качестве альтернативы, не требующей удаленного агента (опциональный модуль);

      • salt-syndic — пакет, который используется для настройки среды с несколькими (masters) серверами управления и позволяет связывать их в единую сеть и управлять ими из одного места (опциональный модуль);

    • rpm-пакеты, которые используются только при установке продукта на РЕД ОС:

      • inno-lcm-salt-formulas — пакет с формулами — специальными шаблонами для установки ПО на устройствах;

      • salt — пакет, содержащий библиотеки, необходимые для работы SaltStack;

      • salt-master — пакет для установки сервера управления (master), который управляет всеми агентами (minions) в инфраструктуре;

      • salt-api — пакет, предоставляющий REST API для SaltStack;

      • salt-minion — пакет для установки агентов (minions) на удаленных серверах.

    Архив с модулем fluent-bit

    Архив включает deb-пакет fluent-bit c системой Fluent Bit, которая используется для сбора, преобразования и передачи лог-файлов аудита в систему-получатель клиента.

    Принципы формирования имен пакетов

    Имена пакетов с основными модулями продукта (inno-lcm) и модулем fluent-bit формируются по шаблону:

    <package_name>_<build_version>-<edition>_<architecture>.<package format>

    Где:

    • package_name — наименование модуля продукта;

    • build_version — версия пакета в соответствии с принципами семантического версионирования (мажорная_версия.минорная_версия.патч-версия);

    • edition — редакция дистрибутива;

    • architecture — архитектура;

    • package format — формат пакета; возможные варианты: .deb, rpm.

    Пример имени deb-пакета:

    inno-lcm-core_1.6.0-1_amd64.deb
    fluent-bit_3.0.7_amd64.deb

    Пример имени rpm-пакета:

    inno-lcm-core-1.6.0~457514.a6ac910e-1.x86_64.rpm

    Имена пакетов модуля координации (salt) формируются по шаблону:

    <package_name>_<build_version>_<architecture>.<package format>

    Где:

    • package_name — наименование модуля продукта;

    • build_version — версия пакета в соответствии с принципами семантического версионирования (мажорная_версия.минорная_версия.патч-версия);

    • architecture — архитектура;

    • package format — формат пакета; возможные значения: .deb, .rpm.

    Пример имени deb-пакета:

    salt-common_3006.4_amd64.deb

    Пример имени rpm-пакета:

    salt-3006.4-0.x86_64.rpm

    Схема развертывания

    На Рис. 1 представлена схема развертывания продукта.

    deploy new
    Рис. 1. Схема развертывания

    Установка продукта на ОС Astra Linux

    В разделе приводится инструкция по установке продукта на ОС Astra Linux Special Edition версии 1.7.3 и выше.

    Установка модуля координации (SaltStack)

    Чтобы избежать ошибок в работе, для текущей версии продукта рекомендуется использовать SaltStack версии 3006.4.

    Чтобы установить модуль координации (SaltStack), выполните следующие шаги:

    1. Скачайте и распакуйте архив с модулем координации (SaltStack) для последующей установки сервера управления (master).

    2. Установите пакеты с модулем координации SaltStack на сервере управления (master).

    3. Выполните настройку сервера управления (master).

    4. Выполните настройку Kafka returner.

    5. Обновите информацию о модуле исполнения для сбора истории пользовательских сессий на сервере управления (master).

    6. Запустите сервер управления (master).

    7. Запустите модуль salt-api.

    8. Скачайте и распакуйте архив с модулем координации (SaltStack) для последующей установки агентов (minions).

    9. Установите пакеты с модулем координации SaltStack на агентах (minions).

    10. Выполните настройку агентов (minions).

    11. Создайте пары открытых ключей (public key) для взаимодействия сервера управления (master) с агентами (minions).

    12. Запустите и проверьте работу systemd-службы для агентов (minions).

    Скачивание и распаковка архива с модулем координации (SaltStack) для последующей установки сервера управления (master)

    1. Скачайте архив с модулем координации (SaltStack) требуемой версии и соответствующие файлы контрольных сумм из предоставленного хранилища любым доступным способом.

    2. (Опционально) убедитесь в целостности архива, сравнив его контрольные суммы с контрольными суммами в соответствующих файлах.

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

      shasum -a 512 -c salt_3006.4.zip salt_3006.4.zip.sha512
    3. Перенесите скачанный архив на машину, на которой будет запускаться сервер управления (master), выполнив команду scp (secure copy).

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

      scp salt_3006.4.zip 10.6.32.39
    4. Создайте временный каталог для распаковки и распакуйте архив.

      Пример команд для создания каталога и распаковки архива:

      mkdir salt-lcm
      unzip salt_3006.4.zip -d salt-lcm

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

      ./salt-dbg_3006.4_amd64.deb
      ./salt-3006.4_amd.build
      ./salt-ssh_3006.4_amd64.deb
      ./salt-master_3006.4_amd64.deb
      ./salt-common_3006.4_amd64.deb
      ./salt-3006.4_amd64.chages
      ./salt-cloud_3006.4_amd64.deb
      ./salt-minion_3006.4_amd64.deb
      ./salt-3006.4_amd.buildinfo
      ./salt-3006.4.dsc
      ./salt-api_3006.4_amd64.deb
      ./salt_3006.4.zip.xz

    Установка пакетов с модулем координации SaltStack на сервере управления (master)

    Если вы предполагаете использовать несколько серверов управления (masters), выполните установку отдельно для каждого из них.

    На сервере, который вы будете использовать в качестве сервера управления (master), установите следующие deb-пакеты в указанном порядке:

    1. salt-common — пакет, содержащий библиотеки, необходимые для работы модуля координации (SaltStack).

    2. salt-master — пакет для установки сервера управления (master), который будет управлять всеми агентами (minions) в инфраструктуре.

    3. salt-api — пакет, предоставляющий REST API для модуля координации (SaltStack).

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

    sudo apt install ./inno-salt/salt-common_3006.4_amd64.deb
    sudo apt install ./inno-salt/salt-master_3006.4_amd64.deb
    sudo apt install ./inno-salt/salt-api_3006.4_amd64.deb

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

    • salt-cloud — пакет для управления облачными провайдерами;

    • salt-dbg — пакет для отладки установки и поиска ошибок в настройках;

    • salt-ssh — пакет для взаимодействия с агентами (minions) через протокол SSH, который может использоваться в качестве альтернативы, не требующей удаленных агентов;

    • salt-syndic — пакет, который используется для настройки среды с несколькими серверами управления (masters) и позволяет связывать их в единую сеть и управлять ими из одного места.

    Конфигурация сервера управления (master)

    На машине, на которой установлен сервер управления (master), задайте настройки его конфигурации, следуя инструкциям в разделах ниже.

    По умолчанию сервер управления (master) настраивается через главный файл конфигурации — /etc/salt/master.

    Также поддерживается создание файлов конфигураций в каталоге /etc/salt/master.d/, что позволяет группировать логически параметры конфигурации.

    Подробную информацию о настройке главного файла конфигурации сервера управления (master) см. в официальной документации.

    Создание пользователя, от имени которого будут запускаться процессы SaltStack

    Чтобы создать пользователя, от имени которого будут запускаться процессы SaltStack, создайте файл конфигурации сервера управления (master) /etc/salt/master.d/user.conf и задайте в нем значение параметра user.

    Пример:

    user: <my_user>
    Если параметр не задан, по умолчанию процессы SaltStack будут запускаться от имени пользователя root.
    Включение модуля salt-api

    Чтобы включить модуль salt-api для модуля координации (SaltStack), выполните шаги:

    1. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/salt-api.conf.

      Пример:

      rest_cherrypy:
        port: 8080
        debug: True
        disable_ssl: True

      Где:

      • rest_cherrypy — параметры управления конфигурацией встроенного веб-сервера Cherrypy, который использует salt-api:

        • port — укажите порт, который будет запущен salt-api (например, 8080);

        • debug — (опционально) включите (True) или отключите (False) режим отладки (debug mode) для salt-api;

        • disable_ssl — (опционально) если в первом шаге вы не установили SSL-сертификаты, задайте значение True.

    Включение модуля salt-api с использованием SSL-сертификатов

    Чтобы включить модуль salt-api для модуля координации (SaltStack) с использованием SSL-сертификатов, выполните шаги:

    1. Сгенерируйте SSL-сертификат и закрытый ключ для сервера управления (master). В качестве примера здесь и далее будет использоваться сертификат salt-api.crt и закрытый ключ salt-api.key.

    2. Скопируйте сертификат salt-api.crt и закрытый ключ salt-api.key в директорию /etc/pki/tls/certs/.

    3. В файле конфигурации сервера управления (master) /etc/salt/master.d/salt-api.conf задайте следующие настройки:

      rest_cherrypy:
        port: 8000
        host: 0.0.0.0
        ssl_crt: /etc/pki/tls/certs/salt-api.crt
        ssl_key: /etc/pki/tls/certs/salt-api.key

      где:

      • port — порт, на котором будет запущен веб-сервер;

      • host — IP-адрес, на котором будет открыт порт для подключения клиентов;

      • ssl_crt — путь до файла с SSL-сертификатом сервера управления (master);

      • ssl_key — путь до закрытого ключа от SSL-сертификата сервера управления (master).

    Настройка подключения к S3-совместимому хранилищу

    Чтобы использовать S3-совместимое хранилище в качестве пространства для хранения общих файлов конфигураций и файлов состояний, выполните шаги:

    1. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/fileserver_backend.conf и в параметре fileserver_backend укажите имя хранилища, которое вы будете использовать в качестве бэкенда для файлов.

      Пример:

      fileserver_backend:
        - s3fs
    1. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/s3.conf и задайте в нем настройки подключения к S3-совместимому хранилищу.

      Пример:

      s3.service_url: <s3_hostname>:<s3_port>
      s3.keyid: <ACCESS_KEY>
      s3.key: <SECRET_KEY>
      s3.buckets:
        - salt-bucket
      s3.path_style: True
      s3.location: <REGION>

      Где:

      • s3.service_url — URL-адрес и порт для обращения к S3-совместимому хранилищу;

      • s3.keyid — ключ доступа, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

      • s3.key — секретный ключ, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

      • s3.buckets — имя бакета (например, salt-bucket) для хранения файлов состояния и формул;

      • s3.path_style — стиль представления пути к объектам в S3-совместимом хранилище;

      • s3.location — регион, в котором расположено S3-совместимое хранилище.

        Подробное описание всех параметров приведено в официальной документации.
    2. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf и задайте в нем настройки подключения к S3-совместимому хранилищу для хранения в отдельном бакете данных Pillar.

      Пример:

      ext_pillar:
        - s3:
            service_url: <s3_hostname>:<s3_port>
            keyid: <ACCESS_KEY>
            key: <SECRET_KEY>
            bucket: pillar-bucket
            multiple_env: False
            environment: base
            prefix: ''
            verify_ssl: False
            s3_cache_expire: 30
            s3_sync_on_update: True
            path_style: True
            https_enable: False

      Где:

      • service_url — URL-адрес и порт для обращения к S3-совместимому хранилищу;

      • keyid — ключ доступа, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

      • key — секретный ключ, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

      • bucket — имя бакета (например, pillar-bucket), которое будет использоваться для хранения данных Pillar;

      • multiple_env — параметр, который определяет, поддерживается ли использование нескольких окружений (environments) в хранилище Pillar;

      • environment — параметр, который указывает на основное окружение (base environment) для хранилища Pillar;

      • prefix — префикс для путей к данным в S3-хранилище; пустая строка означает отсутствие префикса;

      • verify_ssl — параметр, который указывает, следует ли проверять SSL-сертификаты при обращении к S3-хранилищу;

      • s3_cache_expire — время жизни кэша (в секундах) для данных, полученных из S3-хранилища;

      • s3_sync_on_update — параметр, который определяет, следует ли выполнять синхронизацию данных при обновлении данных Pillar;

      • path_style — стиль представления пути к объектам в S3-хранилище;

      • https_enable — параметр, который указывает, следует ли использовать HTTPS для обращения к S3-хранилищу.

        Подробное описание всех полей приведено в официальной документации.
    Настройка подключения к S3-совместимому хранилищу с использованием SSL-сертификатов

    Если вы подключаетесь к S3-совместимому хранилищу с использованием SSL-сертификатов, выполните настройки:

    1. В файле конфигурации сервера управления (master) /etc/salt/master.d/s3.conf задайте значения параметров:

      s3.https_enable: True
      s3.verify_ssl: False
      При выставлении значения False для параметра verify_ssl валидация сертификата S3-совместимого хранилища выполняться не будет.
    2. В файле конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf задайте значение параметра:

      ext_pillar:
       - s3:
          https_enable: True
          verify_ssl: False
      При выставлении значения False для параметра verify_ssl валидация сертификата S3-совместимого хранилища выполняться не будет.

    Если требуется валидация сертификатов S3-совместимого хранилища, выполните следующие действия, выбрав один из двух вариантов, описанных ниже:

    • вариант 1:

      1. Скопируйте файл СА-сертификатов на сервер управления (master).

      2. Определите расположение хранилища сертификатов на сервере управления (master):

        $ /opt/saltstack/salt/bin/python3
        Python 3.10.13 (main, Oct  4 2023, 21:54:22) [GCC 11.2.0] on linux
        Type "help", "copyright", "credits" or "license" for more information.
        >>> import certifi
        >>> certifi.where()
        '/opt/saltstack/salt/lib/python3.10/site-packages/certifi/cacert.pem'
      3. Добавьте сертификат в хранилище.

        Пример команды для добавления сертификата ca.crt:

        cat ca.crt | sudo tee -a /opt/saltstack/salt/lib/python3.10/site-packages/certifi/cacert.pem
      4. В файле конфигурации сервера управления (master) /etc/salt/master.d/s3.conf задайте значение параметра verify_ssl: True (аналогично параметру https_enable: True).

        Пример:

        s3.verify_ssl: True
        s3.https_enable: True
      5. В файле конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf задайте значение параметра verify_ssl: True (аналогично параметру https_enable: True) .

        Пример:

        ext_pillar:
        - s3:
            https_enable: True
            verify_ssl: True
    • вариант 2:

      1. Разместите файл СА-сертификатов, используемый в качестве Issuer в S3-совместимом хранилище, на сервере управления (master) по пути /etc/salt/pki/ca.crt.

      2. В файле конфигурации сервера управления (master) /etc/salt/master.d/s3.conf задайте значение параметра verify_ssl: /etc/salt/pki/ca.crt.

        Пример:

        s3.verify_ssl: /etc/salt/pki/ca.crt
        s3.https_enable: True
      3. В файле конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf задайте значение параметра verify_ssl: /etc/salt/pki/ca.crt.

        Пример:

        ext_pillar:
        - s3:
            https_enable: True
            verify_ssl: /etc/salt/pki/ca.crt
    Загрузка пользовательских формул в S3-совместимое хранилище
    Готовые формулы (подробнее см. раздел «Готовые формулы» документа «Руководство по эксплуатации») импортируются автоматически при установке продукта.

    Чтобы загрузить пользовательские формулы (см. раздел «Пользовательские формулы» документа «Руководство по эксплуатации») и формулы-шаблоны (см. раздел «Формулы-шаблоны» документа «Руководство по эксплуатации»), используйте API для импорта формулы в S3-совместимое хранилище importFormulas (см. раздел «Метод importFormulas» документа «Описание API»).

    Настройка интеграции с Apache Kafka
    Отправка событий с сервера управления (master) в Apache Kafka выполняется с помощью библиотеки librdkafka.

    Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/returner.conf.

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

    returner.kafka_custom.bootstrap:
      - "<kafka_host>:<kafka_port>"
    returner.kafka_custom.topic: 'salt-topic'
    returner.kafka_custom.security.protocol: ""
    returner.kafka_custom.ssl.cipher.suites: ""
    returner.kafka_custom.ssl.curves.list: ""
    returner.kafka_custom.ssl.sigalgs.list: ""
    returner.kafka_custom.ssl.key.location: ""
    returner.kafka_custom.ssl.key.password: ""
    returner.kafka_custom.ssl.key.pem: ""
    returner.kafka_custom.ssl.certificate.location: ""
    returner.kafka_custom.ssl.certificate.pem: ""
    returner.kafka_custom.ssl.ca.location: ""
    returner.kafka_custom.ssl.ca.pem: ""
    returner.kafka_custom.ssl.ca.certificate.stores: ""
    returner.kafka_custom.ssl.crl.location: ""
    returner.kafka_custom.ssl.keystore.location: ""
    returner.kafka_custom.ssl.keystore.password: ""
    returner.kafka_custom.ssl.providers: ""
    returner.kafka_custom.ssl.engine.id: ""
    returner.kafka_custom.enable.ssl.certificate.verification: ""
    returner.kafka_custom.ssl.endpoint.identification.algorithm: ""
    returner.kafka_custom.debug: "all"
    returner.kafka_custom.log_level: ""
    returner.kafka_custom.allow.auto.create.topics: "true"
    event_return: kafka_custom

    В таблицах ниже приводится описание параметров из файла.

    Обязательные параметры:

    Наименование Описание Пример значения

    returner.kafka_custom.bootstrap

    Список хостов с указанием портов, где запущен брокер сообщений Apache Kafka

    "192.168.1.101:9092"

    returner.kafka_custom.topic

    Топик Apache Kafka

    salt-topic

    event_return

    Выбор способа отправки событий возврата

    kafka_custom

    Опциональные параметры:

    Наименование Описание Пример значения

    returner.kafka_custom.security.protocol

    Протокол, который используется для соединения с Apache Kafka

    plaintext

    returner.kafka_custom.ssl.cipher.suites

    Набор шифров (именованная комбинация аутентификации, шифрование, MAC-адреса и алгоритмы обмена ключами), используемые для согласования параметров безопасности сетевого подключения по протоколу SSL. Подробнее см. SSL_CTX_set_cipher_list

    returner.kafka_custom.ssl.curves.list

    Поддерживаемые кривые (supported curves), стандартные/именованные или «явные» GF(2^k) или GF(p) для использования сервером, которые передаются в сообщении TLS ClientHello. Подробнее см. SSL_CTX_set1_curves_list

    returner.kafka_custom.ssl.sigalgs.list

    Поддерживаемые алгоритмы цифровой подписи для использования сервером, которые передаются в сообщении TLS ClientHello. Подробнее см. SSL_CTX_set1_sigalgs

    returner.kafka_custom.ssl.key.location

    Путь к закрытому ключу клиента (PEM), который используется для аутентификации

    returner.kafka_custom.ssl.key.password

    Пароль для закрытого ключа (для использования с ssl.key.location и set_ssl_cert())

    returner.kafka_custom.ssl.key.pem

    Строка закрытого ключа клиента (в PEM-формате), которая используется для аутентификации

    returner.kafka_custom.ssl.certificate.location

    Путь к публичному ключу клиента (в PEM-формате), который используется для аутентификации

    returner.kafka_custom.ssl.certificate.pem

    Строка публичного ключа клиента (в PEM-формате), которая используется для аутентификации

    returner.kafka_custom.ssl.ca.location

    Путь к файлу или каталогу сертификатов CA (Certificate Authority) для проверки ключа брокера

    returner.kafka_custom.ssl.ca.pem

    Строка сертификата CA (в PEM-формате) для проверки ключа брокера

    returner.kafka_custom.ssl.ca.certificate.stores

    Список хранилищ сертификатов Windows (через запятую), из которых можно загрузить сертификаты CA. Сертификаты будут загружены в том же порядке, в котором указаны хранилища

    returner.kafka_custom.ssl.crl.location

    Путь к CRL для валидации сертификата брокера

    returner.kafka_custom.ssl.keystore.location

    Путь к хранилищу ключей клиента (PKCS#12), которые используются для аутентификации

    returner.kafka_custom.ssl.keystore.password

    Пароль хранилища ключей клиента (PKCS#12)

    returner.kafka_custom.ssl.providers

    Список провайдеров (разделенный запятыми) OpenSSL 3.0.x

    returner.kafka_custom.ssl.engine.id

    Идентификатор OpenSSL

    returner.kafka_custom.enable.ssl.certificate.verification

    Включение проверки сертификата встроенного брокера OpenSSL (сервера). Эта проверка может быть расширена приложением путем реализации certificate_verify_cb

    returner.kafka_custom.ssl.endpoint.identification.algorithm

    Алгоритм идентификации endpoint для проверки имени хоста брокера с использованием сертификата брокера

    returner.kafka_custom.debug

    Список контекстов отладки (разделенный запятыми), которые необходимо включить

    returner.kafka_custom.log_level

    Уровень логирования

    returner.kafka_custom.allow.auto.create.topics

    Разрешение автоматического создания темы в брокере при подписке на несуществующие темы или назначения им тем.

    Для корректной работы данной конфигурации брокер должен быть настроен с параметром auto.create.topics.enable=true
    В качестве инструкции по генерации сертификатов используйте документ "Using SSL with librdkafka".
    Настройка интеграции с Apache Kafka с использованием защищенного TLS-соединения

    Если вы настраиваете интеграцию с использованием защищенного TLS-соединения, в файле конфигурации сервера управления (master) /etc/salt/master.d/returner.conf укажите все настройки, приведенные ниже:

    returner.kafka_custom.bootstrap:
      - 10.31.0.170:9092
    returner.kafka_custom.topic: salt-topic
    returner.kafka_custom.security.protocol: "ssl"
    returner.kafka_custom.ssl.key.location: "/etc/<span data-markjs="true" class="terms-mark tooltipstered terms-term-selector">salt</span>/pki/salt_kafkaclient.key"
    returner.kafka_custom.ssl.key.password: "abcdefgh"
    returner.kafka_custom.ssl.certificate.location: "/etc/<span data-markjs="true" class="terms-mark tooltipstered terms-term-selector">salt</span>/pki/salt_kafkaclient.pem"
    returner.kafka_custom.ssl.ca.location: "/etc/<span data-markjs="true" class="terms-mark tooltipstered terms-term-selector">salt</span>/pki/salt_kafkaca.crt"
    returnet.kafka_custom.ssl.endpoint.identification.algorithm: "none"
    returner.kafka_custom.enable.ssl.certificate.verification: "false"
    returner.kafka_custom.allow.auto.create.topics: "true"
    returner.kafka_custom.debug: "all"
    event_return: kafka_custom
    Настройка журналирования

    Для настройки журналирования сервера управления (master) cоздайте файл конфигурации /etc/salt/master.d/logging.conf и задайте в нем необходимые значения параметров, следуя примеру:

    log_level: warning
    log_file: /app/inno-osmax/logs/salt-master/master
    log_level_logfile: warning
    api_logfile: /app/inno-osmax/logs/salt-api/api
    key_logfile: /app/inno-osmax/logs/salt-key/key

    Где:

    • log_level — настройка уровня журналирования для сообщений, отправляемых на консоль; возможные значения:

      • all —  все сообщения будут записываться в лог-файл;

      • warning — сообщения, содержащие предупреждение о потенциальной проблеме или необычном состоянии, которое не является ошибкой, но требует внимания;

      • info — информационные сообщения о ходе работы модуля;

      • profile — профильная информация о производительности модуля координации (SaltStack);

      • debug — сообщения, содержащие отладочную информацию;

      • trace — сообщения, содержащие детальную отладочную информацию;

      • garbage — сообщения, содержащие более детальную (чем trace) отладочную информацию;

      • error — сообщения об ошибке, которая привела к некритическому сбою;

      • critical — сообщения об ошибке, которая привела к критическому сбою;

      • quiet — сообщения в лог-файл записываться не будут;

    • log_file — лог-файл; локальный путь к лог-файлу сервера управления (master);

    • log_level_logfile — уровень журналирования для сообщений, отправляемых в лог-файл;

      Возможные значения аналогичны значениям параметра log_level.
    • api_logfile — лог-файл; локальный путь к лог-файлу модуля salt-api;

    • key_logfile — лог-файл; локальный путь к лог-файлу модуля salt-key.

    Настройка ротации и архивирования

    Для настройки ротации и архивирования используется служба logrotate, которая обеспечивает автоматическую ротацию, сжатие, удаление и отправку лог-файлов по почте. Обычно служба logrotate запускается как ежедневное задание cron. В зависимости от настроек каждый лог-файл может обрабатываться ежедневно, еженедельно, ежемесячно или при достижении определенного размера.

    Чтобы задать необходимые настройки, создайте файл конфигурации /etc/logrotate.d/salt-common.

    Пример c минимальными настройками:

    /app/inno-osmax/logs/salt-master/master {
    daily
    missingok
    rotate 45
    compress
    notifempty
    }
    
    /app/inno-osmax/logs/salt-api/api {
    daily
    missingok
    rotate 45
    compress
    notifempty
    }
    
    /app/inno-osmax/logs/salt-key/key {
    daily
    missingok
    rotate 45
    compress
    notifempty
    }

    Где:

    • /app/inno-osmax/logs/<модуль SaltStack>/<имя лог-файла> — путь до лог-файла;

    • daily — период ротации лог-файла (ежедневно);

    • missingok — если лог-файл отсутствует, будет выполняться переход к следующему файлу без вывода сообщения об ошибке;

    • rotate 45 — лог-файл будет проходить 45 ежедневных ротаций, перед тем как будет удален;

    • compress — файл будет сжат после ротации;

    • notifempty — если лог-файл пустой, ротация выполняться не будет.

    Настройка режима мульти-мастер с автоматическим переключением (failover)
    Настройки, описанные ниже, являются опциональными и выполняются только при использовании режима мульти-мастер с автоматическим переключением (failover).
    1. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/master_sign_pubkey.conf.

    2. В конфигурационном файле сервера управления (master) включите настройку подписи всех открытых ключей, установив значение параметра:

      master_sign_pubkey: True
    3. Перезапустите службу salt-master. После перезапуска сервер управления (master) автоматически создаст новую пару ключей и будет использовать ее для создания подписи открытых ключей, прикрепленной к ответу аутентификации:

      master_sign.pem
      master_sign.pub
    4. (Опционально) задайте имя для пары ключей подписи, установив значение параметра:

      master_sign_key_name: <name_without_suffix>
    Настройка параметров оптимизации производительности работы сервера управления (master)

    При описанной выше настройке сервер управления (master) вычисляет подпись для каждого запроса аутентификации, что требует большого количества ресурсов процессора.

    Чтобы избежать высокой нагрузки, сервер управления (master) может использовать созданную заранее подпись публичного ключа. Такая подпись сохраняется в виде строки в кодировке Base64, которую сервер управления (master) читает один раз при запуске и прикрепляет только эту строку к ответам аутентификации.

    Включение этого параметра также дает пользователям возможность иметь пару ключей подписи в системе, отличной от текущего сервера управления (master), и создавать там подпись с открытыми ключами. Вероятно, в системе с более строгими правилами брандмауэра, без доступа в Интернет и с меньшим количеством пользователей.

    Чтобы создать такую подпись, выполните команду:

    salt-key --gen-signature

    В директории сервера управления (master) pki будет создан файл с подписью по умолчанию:

    /etc/salt/pki/master/master_pubkey_signature

    Это простой текстовый файл с двоичной подписью, преобразованной в base64. Если пара подписи еще не существует, пара подписи и файл подписи будут автоматически созданы за один вызов:

    salt-key --gen-signature --auto-create

    Чтобы сервер управления (master) использовал пересозданную подпись, установите значение параметра:

    master_use_pubkey_signature: True

    Для этого в каталоге сервера управления (master) pki должен присутствовать файл master_pubkey_signature с правильной подписью. Если у файла будет другое имя, задайте его, указав значение параметра:

    master_pubkey_signature: <filename>

    При наличии большого количества серверов управления (masters) и открытых ключей (по умолчанию и для подписи) рекомендуется использовать имя хоста salt-masters для имен файлов подписи. Подписи легко перепутать, поскольку они не несут никакой информации о ключе, из которого была создана подпись.

    Подробное описание включения режима мульти-мастер с автоматическим переключением (failover) см. в документе «Руководство по эксплуатации» в разделе «Настройка режима мульти-мастер с автоматическим переключением (failover)».

    Настройка включения опции удаленной установки агентов (minions)
    Настройки, описанные в разделе являются опциональными и применяются, если вы подключаете опцию удаленной установки агентов (minions).
    1. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/roster.conf:

      roster_defaults:
        sudo: True
        ssh_options:
          - "StrictHostKeyChecking=no"
          - "UserKnownHostsFile=/dev/null"

      Где:

      • roster_defaults — блок параметров, которые используются при управлении удаленными серверами:

        • sudo — параметр, указывающий на то, что при подключении к удаленному серверу через SSH команды выполняются от имени суперпользователя;

        • ssh_options — список опций SSH, которые применяются при подключении к удаленным серверам:

          • StrictHostKeyChecking — опция включения/выключения проверки хост-ключей (host key checking); возможные значения:

            • yes — SSH-клиент строго проверяет ключи хостов при подключении к новым серверам: если ключ хоста не найден в файле known_hosts, SSH-клиент выдает предупреждение и запрашивает разрешение на добавление этого ключа в файл known_hosts;

            • no — отключение проверки ключей хостов;

          • UserKnownHostsFile — опция, указывающая путь к файлу, в котором хранятся известные ключи хостов (known hosts); по умолчанию, SSH клиент сохраняет ключи хостов в файле ~/.ssh/known_hosts.

    2. Создайте файл конфигурации /etc/salt/roster (в формате, указанном в примере ниже) и укажите в нем список устройств, к которым должны применяться настройки ростера, заданные в файле /etc/salt/master.d/roster.conf.

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

      dev-lcm-vm0104.lcm.terra.inno.tech: {}
      dev-lcm-vm0105.lcm.terra.inno.tech: {}
      ...
      dev-lcm-vm0109.lcm.terra.inno.tech: {}

    Настройка Kafka returner

    Загрузка Kafka returner в S3-совместимое хранилище

    В S3-совместимое хранилище поместите файл kafka_return_custom.py в бакет salt-bucket по пути /base/_returners.

    Пример результата:

    kafka returner path
    Обновление информации о Kafka returner на сервере управления (master)

    Чтобы убедиться в корректности установки и готовности Kafka returner к использованию, обновите информацию о нем на сервере управления (master), выполнив команду:

    sudo salt-run saltutil.sync_returners

    Обновление информации о модуле исполнения для сбора истории пользовательских сессий на сервере управления (master)

    Модуль исполнения для сбора истории пользовательских сессий запускается автоматически при установке бэкенда продукта и обеспечивает запись данных в S3-бакет salt-bucket в файл user_sessions.py по пути base/_modules/.

    Для корректной работы модуля обновите информацию о нем на сервере управления (master), выполнив команду:

    salt '*' saltutil.sync_modules --async

    Запуск сервера управления (master)

    1. Запустите сервер управления (master), выполнив команду:

      sudo systemctl start salt-master
    2. Проверьте статус сервера управления (master), выполнив команду:

      sudo systemctl status salt-master

    Запуск модуля salt-api

    1. Запустите модуль salt-api, выполнив команду:

      sudo systemctl start salt-api
    2. Проверьте статус модуля salt-api, выполнив команду:

      sudo systemctl status salt-api

    Скачивание и распаковка архива с модулем координации (SaltStack) для последующей установки агентов (minions)

    1. Скачайте архив с модулем координации (SaltStack) требуемой версии и соответствующие файлы контрольных сумм из предоставленного хранилища любым доступным способом.

    2. (Опционально) убедитесь в целостности архива, сравнив его контрольные суммы с контрольными суммами в соответствующих файлах.

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

      shasum -a 512 -c salt_3006.4.zip salt_3006.4.zip.sha512
    3. Перенесите deb-пакеты salt-common и salt-minion на машину, на которой будет запускаться агент (minion), выполнив команду scp (secure copy).

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

      scp salt_3006.4.zip 10.6.32.39
    4. Создайте временный каталог для распаковки и распакуйте архив.

      Пример команд для создания каталога и распаковки архива:

      mkdir salt-lcm
      unzip salt_3006.4.zip -d salt-lcm

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

      ./salt-dbg_3006.4_amd64.deb
      ./salt-3006.4_amd.build
      ./salt-ssh_3006.4_amd64.deb
      ./salt-master_3006.4_amd64.deb
      ./salt-common_3006.4_amd64.deb
      ./salt-3006.4_amd64.chages
      ./salt-cloud_3006.4_amd64.deb
      ./salt-minion_3006.4_amd64.deb
      ./salt-3006.4_amd.buildinfo
      ./salt-3006.4.dsc
      ./salt-api_3006.4_amd64.deb
      ./salt_3006.4.zip.xz

    Установка пакетов с модулем координации SaltStack на агентах (minions)

    Чтобы установить пакеты с модулем координации SaltStack на агентах (minions), выполните следующие шаги:

    Установите deb-пакеты стандартным способом в указанном порядке на устройствах, которые будут использоваться в качестве агентов (minions):

    1. salt-common — пакет, содержащий библиотеки, необходимые для работы SaltStack.

    2. salt-minion — пакет для установки агентов (minions) на удаленных устройствах.

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

    sudo apt install ./inno-salt/salt-common_3006.4_amd64.deb
    sudo apt install ./inno-salt/salt-minion_3006.4_amd64.deb

    Конфигурация агента (minion)

    На машине, на которой установлен агент (minion), задайте настройки его конфигурации, следуя инструкции ниже.

    По умолчанию агент (minion) настраивается через главный файл конфигурации — /etc/salt/minion.

    Также поддерживается создание файлов конфигураций в каталоге /etc/salt/minion.d/, что позволяет группировать логически параметры конфигурации.

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

    1. Cоздайте файл конфигурации агента (minion) /etc/salt/minion.d/master.conf.

    2. Задайте параметры для подключения к серверу управления (master).

    3. Задайте интервал в минутах, через который агент будет отправлять ping-запрос на сервер управления (master). Рекомендуемое значение — 10 минут.

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

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

      • чем меньше значение параметра, тем больший объем данных будет передаваться в единицу времени, увеличивая нагрузку на сеть;

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

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

      master:
        - <адрес сервера управления (master)>
      ping_interval: 10
    4. (Опционально) для организации подключения в отказоустойчивом режиме (HA) — в режиме «мульти-мастер» (failover) внесите соответствующие настройки в файл /etc/salt/minion.d/master.conf. Ниже представлены минимальные настройки для работы с типом конфигурации failover:

      master:
        - <адрес 1-ого сервера управления (master)>
        - <адрес 2-ого сервера управления (master)>
        - ...
        - <адрес N-ого сервера управления (master)>
      
      master_type: failover
      master_alive_interval: 60
      master_failback: True
      master_failback_interval: 30
      random_master: true

      Где:

      • master_type — используемый способ подключения к серверам управления (master) (режим failover);

      • master_alive_interval — таймаут проверки серверов на предмет доступности, используемый для переключения между серверами;

      • master_failback — сценарий повторного подключения к серверам при их недоступности (значение True позволяет выполнить попытку подключения к серверам, которые были ранее недоступны);

      • master_failback_interval — таймаут проверки серверов при их повторной недоступности;

      • random_master — сценарий выбора сервера управления (master) из списка (значение True указывает, что будет выбираться случайный сервер из списка).

        Подробнее о настройке режима мульти-мастер с автоматическим переключением (failover) см. в документе «Руководство по эксплуатации» в разделе «Настройка режима мульти-мастер с автоматическим переключением (failover)».
    1. (Опционально) создайте файл конфигурации агента (minion) /etc/salt/minion.d/sudo_user.conf и задайте в нем пользователя, от имени которого будут запускаться процессы SaltStack.

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

      user: user
      sudo_user: root

      Где:

      • user — пользователь, от имени которого будут запускаться процессы SaltStack (значение по умолчанию: root);

      • sudo_user — пользователь, с правами которого будут выполняться удаленные команды SaltStack от имени активного пользователя (заданного в параметре user)

        Обычно для параметра sudo_user указывается значение root. В этом случае в параметре user не может быть указан пользователь root.

        Если вы используете параметр sudo_user, дополнительно выполните следующие настройки:

        1. Добавьте нового пользователя в файл sudoers и укажите, что от имени этого пользователя может запускаться агент (minion).

        2. Очистите кэш агента (minion).

        3. Укажите нового пользователя в качестве владельца каталога minion pki: sudo_user: root.

    Настройка журналирования

    Для настройки журналирования агента (minion) cоздайте файл конфигурации /etc/salt/minion.d/logging.conf и задайте в нем необходимые значения параметров, следуя примеру:

    log_level: info
    log_file: /app/inno-osmax/logs/salt-minion/minion
    log_level_logfile: info

    Где:

    • log_level — настройка уровня журналирования для сообщений, отправляемых на консоль; возможные значения:

      • all —  все сообщения будут записываться в лог-файл;

      • warning — сообщения, содержащие предупреждение о потенциальной проблеме или необычном состоянии, которое не является ошибкой, но требует внимания;

      • info — информационные сообщения о ходе работы модуля;

      • profile — профильная информация о производительности модуля координации (SaltStack);

      • debug — сообщения, содержащие отладочную информацию;

      • trace — сообщения, содержащие детальную отладочную информацию;

      • garbage — сообщения, содержащие более детальную (чем trace) отладочную информацию;

      • error — сообщения об ошибке, которая привела к некритическому сбою;

      • critical — сообщения об ошибке, которая привела к критическому сбою;

      • quiet — сообщения в лог-файл записываться не будут;

    • log_file — лог-файл; локальный путь к лог-файлу агента (minion);

    • log_level_logfile — уровень журналирования для сообщений, отправляемых в лог-файл.

      Возможные значения аналогичны значениям параметра log_level.
    Настройка ротации и архивирования

    Для настройки ротации и архивирования используется служба logrotate, которая обеспечивает автоматическую ротацию, сжатие, удаление и отправку лог-файлов по почте. Обычно служба logrotate запускается как ежедневное задание cron. В зависимости от настроек каждый лог-файл может обрабатываться ежедневно, еженедельно, ежемесячно или при достижении определенного размера.

    Чтобы задать необходимые настройки, создайте файл конфигурации /etc/logrotate.d/salt-common.

    Пример c минимальными настройками:

    /app/inno-osmax/logs/salt-minion/minion {
    daily
    missingok
    rotate 45
    compress
    notifempty
    }

    Где:

    • /app/inno-osmax/logs/<модуль SaltStack>/<имя лог-файла> — путь до лог-файла;

    • daily — период ротации лог-файла (ежедневно);

    • missingok — если лог-файл отсутствует, будет выполняться переход к следующему файлу без вывода сообщения об ошибке;

    • rotate 45 — лог-файл будет проходить 45 ежедневных ротаций, перед тем как будет удален;

    • compress — файл будет сжат после ротации;

    • notifempty — если лог-файл пустой, ротация выполняться не будет.

    Создание пар открытых ключей (public key) для взаимодействия сервера управления (master) с агентами (minions)

    Сервер управления (master) взаимодействует с агентами (minion) посредством открытого ключа шифрования и аутентификации. Чтобы агент (minion) смог принять команды от сервера управления (master), его ключ должен быть принят сервером управления (master).

    Для управления всеми ключами на сервере управления (master) используйте команду salt-key.

    Для просмотра всех ключей, которые находятся на сервере управления (master) используйте команду salt-key -L.

    Пример:

    # salt-key -L
    Accepted Keys:
    Denied Keys:
    Unaccepted Keys:
    minion01
    Rejected Keys:

    Где:

    • Accepted — принятые ключи; в этом состоянии агент (minion) может общаться с сервером управления (master);

    • Rejected — ключи, отклоненные с помощью команды salt-key; в этом состоянии агент (minion) не принимает команды с сервера управления (master);

    • Denied — ключи, автоматически отклоненные сервером управления (master); в этом состоянии агент (minion) не принимает команды с сервера управления (master);

    • Unaccepted — ключи, которые находятся в ожидании принятия.

    Чтобы принять все отложенные (Unaccepted) ключи, используйте команду salt-key -A.

    Пример:

    # salt-key -A
    The following keys are going to be accepted:
    Unaccepted Keys:
    minion01
    Proceed? [n/Y] y
    Key for minion minion01 accepted.

    Чтобы принять ключ только выбранного агента (minion), используйте эту же команду и в аргументе -a укажите имя хоста агента (minion).

    Пример:

    # salt-key -a minion01
    The following keys are going to be accepted:
    Unaccepted Keys:
    minion
    Proceed? [n/Y] y
    Key for minion minion01 accepted.

    Обмен командами и данными между сервером управления (master) и агентом (minion) возможен только после того, как будет произведен обмен ключами, и ключ агента будет принят (Accepted) сервером управления (master).

    Пример:

    # salt-key -L
    Accepted Keys:
    minion01
    Denied Keys:
    Unaccepted Keys:
    Rejected Keys:

    В тестовых целях допустимо использовать автоматический прием с подтверждением всех ключей от любых агентов (minions), исключающий необходимость ручного подтверждения каждого нового агента (minion). Для этого в файле конфигурации сервера управления (master) задайте параметр:

    auto_accept: true

    Запуск и проверка работы systemd-службы для агента (minion)

    1. Запустите systemd-службу salt-minion, выполнив команду:

      sudo systemctl start salt-minion
    2. Перезапустите systemd-службу salt-minion, выполнив команду:

      sudo systemctl restart salt-minion
    3. Проверьте статус службы salt-minion, выполнив команду:

      sudo systemctl status salt-minion

    Установка бэкенда и фронтенда продукта

    Чтобы установить бэкенд и фронтенд продукта, выполните шаги:

    1. Скачайте и распакуйте архив с основными модулями продукта.

    2. Установите и выполните настройку модулей бэкенда.

    3. Установите фронтенд и выполните настройку веб-сервера.

    Скачивание и распаковка архива с основными модулями продукта

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

    1. Скачайте архив с deb-пакетами требуемой версии и соответствующие файлы контрольных сумм из предоставленного хранилища любым доступным способом.

    2. (Опционально) убедитесь в целостности архива, сравнив его контрольные суммы с контрольными суммами в соответствующих файлах.

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

      shasum -a 512 -c inno-lcm-all-1.6.0.tar.gz inno-lcm-all-1.6.0.tar.gz.sha512
    3. Перенесите скачанный архив на машину, на которой будет запускаться inno-lcm, выполнив команду scp (secure copy):

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

      scp inno-lcm-all-1.6.0.tar.gz 10.6.32.218
    4. Создайте временный каталог для распаковки и распакуйте архив.

      Пример команд для создания каталога и распаковки архива:

      mkdir inno-lcm
      tar xvf inno-lcm-all-1.6.0.tar.gz -C inno-lcm

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

      x inno-lcm-salt-formulas-0.12.0.tar.gz
      x salt-custom/kafka_return_custom.py
      x packages/inno-lcm-core_1.6.0-1_amd64.deb
      х packages/inno-lcm-provisioner_1.0.0-1_amd64.deb
      x packages/inno-lcm-webadmin_1.3.3-1_all.deb
      x packages/inno-lcm-app-shop_1.2.0-1_all.deb
      x docs/LCM-UserGuide-Ru.pdf
      x docs/LCM-API-Guide-Ru.pdf
      x docs/LCM-AdminGuide-Ru.pdf
      x docs/LCM-MaintenanceGuide-Ru.pdf
      x docs/LCM-Desc-Ru.pdf
      x docs/LCM-InstallGuide-Ru.pdf
      x docs/CHANGELOG.md

    Установка и конфигурация модулей бэкенда

    Установка бэкенда может выполняться как на отдельном сервере, так и на сервере вместе с фронтендом продукта.

    Для установки бэкенда:

    1. Установите пакеты:

    2. Выполните конфигурацию модулей:

    Установка пакета inno-lcm-core

    Чтобы установить пакет inno-lcm-core, выполните команду:

    sudo apt install ./<пакет>

    Пример:

    sudo apt install ./inno-lcm-core_1.6.0-1_amd64.deb

    После успешной установки пакета:

    1. Создан конфигурационный файл с настройками по умолчанию — /opt/inno-lcm-core/application.properties (описание настроек см. в разделе «Конфигурация бэкенда»).

      В случае когда выполняется обновление продукта до более новой версии, файл application.properties остается неизменным, но дополнительно создается файл application.example.properties. Этот файл носит ознакомительный характер и используется в качестве примера для самостоятельного переопределения параметров в конфигурационном файле application.properties.
    2. Создана systemd-служба lcm.

      При установке пакета inno-lcm-core автоматически создается пользователь inno-osmax-core, от имени которого запускается systemd-служба lcm. При обновлении или удалении пакета пользователь удален не будет.
    Конфигурация модуля inno-lcm-core

    Конфигурация бэкенда выполняется в файле application.properties, помещенном в каталог /opt/inno-lcm-core. Файл создается автоматически при установке deb-пакета inno-lcm-core и содержит значения по умолчанию.

    Пример конфигурационного файла с настройками по умолчанию

    ## This is an example of `application.properties` file as main configuration file for lcm-core backend
    
    ###############################################################################
    # HTTP server properties section                                              #
    ###############################################################################
    
    ## Main application port
    quarkus.http.port=8081
    
    ## SSL configuration section.
    ## To enable serving requests via HTTPS uncomment the following parameters:
    #quarkus.http.insecure-requests=disabled
    #quarkus.http.ssl-port=8081
    #quarkus.http.ssl.certificate.key-store-file=/opt/inno-lcm-core/keystore.jks
    #quarkus.http.ssl.certificate.key-store-password=keystore@12345
    
    ###############################################################################
    # Authentication & Authorization section                                      #
    ###############################################################################
    
    ## Enable/disable authentication
    lcm.application.auth.disabled=false
    ## Enables kerberos authentication debug mode
    #quarkus.kerberos.debug=true
    ## There are 2 alternative options for the kerberos credentials [principal realm, name and password] defining:
    ## 1) via direct defining;
    ## 2) via keytab file path defining
    ##
    ## Direct kerberos credentials defining:
    quarkus.kerberos.service-principal-name=lcm_backend_svc
    quarkus.kerberos.service-principal-realm=my.domain.com
    quarkus.kerberos.service-principal-password=Password123
    ## Path to keytab:
    #quarkus.kerberos.keytab-path=/opt/inno-lcm-core/my_file.keytab
    
    ## Old deprecated authorization based on LDAP-groups only
    ## List of LDAP groups whose users are authorized in Admin Console
    #lcm.authorization.user-groups-white-list[0]=CN=testGroup,CN=Users,DC=inno,DC=test
    
    # New RBAC
    lcm.authorization.rbac.enabled=false
    # The following users will be mapped to the superuser role when the application starts
    #lcm.authorization.rbac.super-users[0]=alice@INNO.TEST
    #lcm.authorization.rbac.super-users[1]=bob@INNO.TEST
    
    ###############################################################################
    # Database properties section                                                 #
    ###############################################################################
    
    ## Main datasource
    quarkus.datasource."lcm-db".username=lcm
    quarkus.datasource."lcm-db".password=password
    quarkus.datasource."lcm-db".reactive.url=postgresql://localhost:5432/lcm
    ## If you need to specify default DB schema use the syntax below
    #quarkus.datasource."lcm-db".reactive.url=postgresql://localhost:5432/lcm?search_path=lcm_schema_name
    
    ## Main datasource Liquibase config
    quarkus.datasource."lcm-db".jdbc.url=jdbc:postgresql://localhost:5432/lcm
    quarkus.liquibase."lcm-db".default-schema-name=lcm
    quarkus.liquibase."lcm-db".migrate-at-start=True
    
    ## Readonly datasource
    quarkus.datasource."lcm-db-readonly".username=readonly
    quarkus.datasource."lcm-db-readonly".password=password
    quarkus.datasource."lcm-db-readonly".reactive.url=postgresql://localhost:5432/lcm
    quarkus.datasource."lcm-db-readonly".jdbc.url=jdbc:postgresql://localhost:5432/lcm
    
    ###############################################################################
    # Hardware inventory properties section                                       #
    ###############################################################################
    
    # Schedule for collections pillars synchronization with S3 (quartz cron format)
    # [At second :00, every 15 minutes starting at minute :00, of every hour]
    lcm.inventory.job.sync-collection-pillars.cron.expr=0 0/15 * ? * * *
    
    # Determines how long session history data should be stored before deletion, 90 days by default
    lcm.inventory.job.user-sessions-cleanup.storage-days-count=90
    
    # Schedule for session history cleaning (quartz cron format)
    # [At 00:00:00am every day]
    lcm.inventory.job.user-sessions-cleanup.cron-expr=0 0 0 ? * * *
    
    # Determines the maximum amount of machine custom attributes in one section
    lcm.inventory.machine-attribute.section.size=20
    
    # Determines the maximum amount of user custom attributes in one section
    lcm.inventory.user-attribute.section.size=20
    
    # The number of minutes since the last agent activity before the device goes into "Offline" status
    lcm.inventory.settings.agent.minutes-to-become-offline=5
    # Absolute file path to `wtmp` file which stores historical data of user logins and logouts
    lcm.inventory.settings.agent.user-session-file-path=/var/log/wtmp
    # Absolute file path to `utmp` file which stores user sessions in real time
    lcm.inventory.settings.agent.active-user-session-file-path=/var/run/utmp
    # Option, which determines the considered Salt mode (single- or multimaster), can be true or false
    lcm.inventory.settings.agent.multi-master-mode=true
    # Absolute path, containing all files which are to be included into bootstrap script configuration archive (.tar.gz)
    lcm.inventory.settings.agent.bootstrap-script-config-path=/config/script-configs/bootstrap/
    # Optional parameters, matching salt-ssh connection settings,
    # see https://docs.saltproject.io/en/latest/ref/runners/all/salt.runners.manage.html#salt.runners.manage.bootstrap
    #lcm.inventory.settings.agent.bootstrap-ssh-user=
    #lcm.inventory.settings.agent.bootstrap-ssh-password=
    #lcm.inventory.settings.agent.bootstrap-ssh-private-key-path=
    
    #enable JNDI for the LDAP server discovery inside the MS AD domain when you define option 'lcm.inventory.ldap.datasource[i].dns-srv-record'
    quarkus.naming.enable-jndi=true
    ## Determines the page size for any ldap query
    lcm.inventory.ldap.search-page-size=200
    ## The first LDAP datasource configuration
    lcm.inventory.ldap.datasource[0].name=my.domain.com
    lcm.inventory.ldap.datasource[0].base-dn=DC=my,DC=domain,DC=com
    ## There are 2 options to set LDAP hostname pools
    ## 1) direct addresses defining
    ## 2) using DNS SRV records to discover LDAP servers from MS AS domain
    ##
    ## For the direct addresses defining of LDAP datasource please use the following options:
    ## lcm.inventory.ldap.datasource[i].host=
    ## lcm.inventory.ldap.datasource[i].port=
    ## lcm.inventory.ldap.datasource[i].extra-hosts[j].host=
    ## lcm.inventory.ldap.datasource[i].extra-hosts[j].port=
    ##
    ## For the using DNS SRV records to discover LDAP servers from MS AS domain use the following options:
    ### lcm.inventory.ldap.datasource[i].dns-srv-record=
    ##
    lcm.inventory.ldap.datasource[0].host=localhost
    lcm.inventory.ldap.datasource[0].port=636
    lcm.inventory.ldap.datasource[0].username=administrator@my.domain.com
    lcm.inventory.ldap.datasource[0].password=Welkom123
    ## Optional section for the LDAP datasource
    # lcm.inventory.ldap.datasource[0].connect-timeout-millis=10000
    # lcm.inventory.ldap.datasource[0].response-timeout=10000
    # lcm.inventory.ldap.datasource[0].abandon-on-timeout=true
    # lcm.inventory.ldap.datasource[0].allow-concurrent-socket-factory-use=true
    
    ## The second and subsequent LDAP datasource configurations are optional
    #lcm.inventory.ldap.datasource[1].name=my2.domain.com
    #lcm.inventory.ldap.datasource[1].base-dn=DC=my2,DC=domain,DC=com
    #lcm.inventory.ldap.datasource[1].dns-srv-record=_ldap._tcp.dc._msdcs.mydomain.com
    #lcm.inventory.ldap.datasource[1]...
    
    ## LDAPS (LDAP over SSL) parameters section.
    # To configure LDAPS please use the following option
    #lcm.inventory.ldap.datasource[i].ssl=...
    
    # There are 3 options available for this option:
    # value `false` - use this mode when you want to use LDAP without SSL (usually 389 port)
    # value `true` - use this mode when you want to use LDAPS (usually 636 port), requires path to the certificate file or truststore file
    # value `start-tls` - use this mode when you want to establish an insecure connection (usually 389 port),
    #                     but then to immediately use the StartTLS extended operation to convert that insecure connection to a secure one
    #
    # If you want to trust all SSL certificates without direct certificate/truststore definition you can use the option
    # lcm.inventory.ldap.datasource[i].trust-all-ssl-certificates=true
    
    ## The following example shows how to configure LDAPS with certificate file definition for the datasource
    #lcm.inventory.ldap.datasource[0].ssl=true
    #lcm.inventory.ldap.datasource[0].ssl-certificate=/opt/inno-lcm-core/samba_cert.pem
    
    ## The following example shows how to configure LDAPS with truststore file definition for the datasource
    #lcm.inventory.ldap.datasource[0].ssl=true
    #lcm.inventory.ldap.datasource[0].ssl-trust-store=/opt/inno-lcm-core/keystore.jks
    #lcm.inventory.ldap.datasource[0].ssl-trust-store-type=PKCS12
    #lcm.inventory.ldap.datasource[0].ssl-trust-store-password=keystore@12345
    
    ## The following example shows how to configure LDAPS with truststore file definition for all datasource
    #lcm.inventory.ldap.ssl-trust-store=/opt/inno-lcm-core/keystore.jks
    #lcm.inventory.ldap.ssl-trust-store-type=JKS
    #lcm.inventory.ldap.ssl-trust-store-password=keystore@12345
    
    
    ###############################################################################
    # Application Store properties section                                        #
    ###############################################################################
    
    # Determines the amount of hours after which order is considered failed
    lcm.order-management.completion.time.hours=12
    # Schedule for tracking long-running orders as failed (quartz cron format)
    # [At second :00 of minute :00 of every hour]
    lcm.order-management.autocomplete.cron.expr=0 0 * ? * * *
    
    ###############################################################################
    # Kafka messages section                                                      #
    ###############################################################################
    
    ## Kafka bootstrap servers (comma separated)
    mp.messaging.connector.smallrye-kafka.bootstrap.servers=localhost:9092
    # Kafka topic name
    mp.messaging.incoming.salt-events-kafka.topic=salt-topic
    
    ## Kafka SSL connection parameters section.
    ## To enable SSL connection mode uncomment three following parameters:
    #mp.messaging.connector.smallrye-kafka.security.protocol=SSL
    #mp.messaging.connector.smallrye-kafka.ssl.truststore.location=/etc/ssl/certs/java/cacerts
    #mp.messaging.connector.smallrye-kafka.ssl.truststore.password=changeit
    ## Optionally if the custom truststore is used:
    ## To change the format use one of JKS, JCEKS, P12, PKCS12, PFX. Default format is JKS
    #mp.messaging.connector.smallrye-kafka.ssl.truststore.type=PKCS12
    
    ## To enable mutual TLS connection mode uncomment three following parameters, along with configuration above:
    #mp.messaging.connector.smallrye-kafka.ssl.keystore.location=/opt/inno-lcm-core/keystore.jks
    #mp.messaging.connector.smallrye-kafka.ssl.keystore.password=keystore@12345
    ## Optionally if the custom keystore is used:
    ## To change the format use one of JKS, JCEKS, P12, PKCS12, PFX. Default format is JKS
    #mp.messaging.connector.smallrye-kafka.ssl.keystore.type=PKCS12
    
    ###############################################################################
    # REST clients common configuration                                           #
    ###############################################################################
    
    ## SSL connection parameters sections.
    ## To enable accessing REST endpoints via HTTPS uncomment two following parameters:
    #quarkus.rest-client.trust-store=/etc/ssl/certs/java/cacerts
    #quarkus.rest-client.trust-store-password=changeit
    ## Optionally if the custom truststore is used:
    ## To change the format use one of JKS, JCEKS, P12, PKCS12, PFX. Default format is JKS
    #quarkus.rest-client.trust-store-type=PKCS12
    ## For disabling SSL connection verification you can use option below
    #quarkus.rest-client.remote-access.trust-all=true
    
    ###############################################################################
    # SaltStack integration section                                               #
    ###############################################################################
    
    lcm.salt-adapter.command-runner.http-scheme=http
    lcm.salt-adapter.command-runner.master-api-port=8000
    lcm.salt-adapter.command-runner.global-auth.eauth=pam
    lcm.salt-adapter.command-runner.global-auth.login=salt_api
    lcm.salt-adapter.command-runner.global-auth.password=123
    lcm.salt-adapter.command-runner.retry.number-of-attempts=5
    lcm.salt-adapter.command-runner.retry.initial-back-off=1s
    lcm.salt-adapter.command-runner.retry.max-back-off=1s
    
    ## Salt masters configuration section.
    ## Optional, this section should be used when backend server can't resolve salt master by DNS name
    #lcm.salt-adapter.command-runner.override-masters[0].id=salt-master1
    #lcm.salt-adapter.command-runner.override-masters[0].uri=http://192.168.0.1:8000
    
    ## The second and other Salt masters can be configured in the same way
    #lcm.salt-adapter.command-runner.override-masters[1].id=salt-master2
    #lcm.salt-adapter.command-runner.override-masters[1].uri=http://192.168.0.2:8000
    
    ###############################################################################
    # Remote access service integration section                                   #
    ###############################################################################
    
    # URL to the guacamole remote access service
    quarkus.rest-client.remote-access.url=https://guacamole-host.net:9099/guacamole
    # for an advanced configuration of the quarkus REST client to the guacamole service you can set up the following settings group
    #quarkus.rest-client.remote-access.connect-timeout
    #quarkus.rest-client.remote-access.trust-store
    #quarkus.rest-client.remote-access.trust-store-password
    #quarkus.rest-client.remote-access.trust-store-type
    #quarkus.rest-client.remote-access.key-store
    #quarkus.rest-client.remote-access.key-store-password
    #quarkus.rest-client.remote-access.key-store-type
    #quarkus.rest-client.remote-access.hostname-verifier
    #quarkus.rest-client.remote-access.connection-ttl
    #and others
    #quarkus.rest-client.remote-access.***
    
    # system account login for the guacamole remote access service
    lcm.inventory.remote-access.username=admin
    # system account login password for the guacamole remote access service
    lcm.inventory.remote-access.password=password
    
    ###############################################################################
    # S3 integration section                                                      #
    ###############################################################################
    
    # contains a list of S3 server URIs
    lcm.salt-adapter.s3.server-uri-list=http://localhost:9000,http://localhost:9900
    ## To enable SSL connection mode replace 'lcm.salt-adapter.s3.server-uri-list' parameter with following value:
    #lcm.salt-adapter.s3.server-uri-list=https://localhost:9000,https://localhost:9900
    lcm.salt-adapter.s3.access-key-id=s3adminSalt
    lcm.salt-adapter.s3.secret-access-key=s3adminSaltPassword
    lcm.salt-adapter.s3.region=ru-location-1
    lcm.salt-adapter.s3.connection-timeout=1s
    lcm.salt-adapter.s3.num-retries=3
    lcm.salt-adapter.s3.initial-retry-delay-millis=100
    lcm.salt-adapter.s3.max-retry-delay-millis=1000
    lcm.salt-adapter.s3.state-bucket-name=salt-bucket
    lcm.salt-adapter.s3.pillar-bucket-name=pillar-bucket
    lcm.salt-adapter.s3.script-bucket-name=script-bucket
    
    ###############################################################################
    # Multimedia service section                                                  #
    ###############################################################################
    
    # contains a list of S3 server URIs
    lcm.multimedia.s3.server-uri-list=http://localhost:9000,http://localhost:9900
    ## To enable SSL connection mode replace 'lcm.multimedia.s3.server-uri-list' parameter with following value:
    #lcm.multimedia.s3.server-uri-list=https://localhost:9000,https://localhost:9900
    lcm.multimedia.s3.access-key-id=s3adminMultimedia
    lcm.multimedia.s3.secret-access-key=s3adminMultimediaPassword
    lcm.multimedia.s3.region=ru-location-1
    lcm.multimedia.s3.connection-timeout=1s
    lcm.multimedia.s3.num-retries=3
    lcm.multimedia.s3.initial-retry-delay-millis=100
    lcm.multimedia.s3.max-retry-delay-millis=1000
    lcm.multimedia.s3.icons-bucket-name=multimedia-bucket
    lcm.multimedia.s3.images-bucket-name=multimedia-bucket
    lcm.multimedia.s3.others-bucket-name=multimedia-bucket
    lcm.multimedia.s3.script-bucket-name=script-bucket
    lcm.multimedia.common.max-file-size-kb=1024
    lcm.multimedia.common.download-token-ttl-seconds=3600
    lcm.multimedia.common.expired-tokens-deletion-cron=0 0 * ? * *
    # Contains current nginx frontend uri, used to form bootstrap script installation link
    lcm.multimedia.common.frontend-uri=http://localhost:8081
    
    ###############################################################################
    # Configurations manager section                                              #
    ###############################################################################
    
    # Determines maximum amount of categories per one configuration
    lcm.catalog.category.configuration-limit=5
    # Determines total amount of categories
    lcm.catalog.category.total-limit=15
    # Determines maximum salt-agent installation script file size in megabytes
    lcm.catalog.script.max-script-size-mbytes=10
    
    ###############################################################################
    # Software inventory section                                                  #
    ###############################################################################
    # Base directory for executable files scan
    lcm.inventory.software.executable-files.base-path-scan=/home/
    # Comma separated sections list which packages will be ignored
    lcm.inventory.software.packages.sections-blacklist=libs,non-free/libs,devel
    
    ###############################################################################
    # Logging section                                                             #
    ###############################################################################
    
    # Common logging config
    quarkus.log.file.enable=true
    quarkus.log.json.file.enable=true
    quarkus.log.json.console.enable=false
    
    # File logging config
    quarkus.log.file.path=/app/inno-osmax/logs/osmax/core/osmax-core.log
    quarkus.log.file.rotation.max-file-size=10M
    quarkus.log.file.rotation.max-backup-index=5
    quarkus.log.file.rotation.file-suffix=.yyyy-MM-dd.gz
    
    # Json format config
    quarkus.log.json.fields.mdc.flat-fields=true
    quarkus.log.json.fields.timestamp.date-format=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
    quarkus.log.json.fields.timestamp.zone-id=UTC
    
    # Audit logging config
    quarkus.log.handler.file.audit-handler.enable=true
    quarkus.log.handler.file.audit-handler.path=/app/inno-osmax/audit/osmax/core/audit-osmax-core.log
    quarkus.log.handler.file.audit-handler.rotation.max-file-size=10M
    quarkus.log.handler.file.audit-handler.rotation.max-backup-index=50
    quarkus.log.handler.file.audit-handler.rotation.file-suffix=.yyyy-MM-dd
    
    quarkus.log.category."AUDIT".level=INFO
    quarkus.log.category."AUDIT".handlers=audit-handler
    quarkus.log.category."AUDIT".use-parent-handlers=false
    
    ###############################################################################
    # Debug section                                                               #
    # Enable all logging events via environment variable `QUARKUS_PROFILE=debug`  #
    # or delete `%debug.` prefix                                                  #
    ###############################################################################
    
    # HTTP server access logs (uri + status)
    %debug.quarkus.http.access-log.enabled=true
    
    # Internal rest-client
    %debug.quarkus.rest-client.logging.scope=request-response
    %debug.quarkus.rest-client.logging.body-limit=500
    %debug.quarkus.log.category."org.jboss.resteasy.reactive.client.logging".level=DEBUG
    %debug.quarkus.log.category."org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext".level=DEBUG
    
    # SaltStack events
    %debug.quarkus.log.category."tech.inno.lcm.salt.events".level=DEBUG
    
    # All backend services
    %debug.quarkus.log.category."tech.inno.lcm".level=DEBUG
    
    # Kerberos
    %debug.quarkus.kerberos.debug=true
    %debug.quarkus.log.category."io.quarkiverse.kerberos.runtime.KerberosIdentityProvider".level=TRACE
    %debug.quarkus.log.category."io.quarkiverse.kerberos.runtime.KerberosIdentityProvider".min-level=TRACE
    
    # AWS client
    %debug.quarkus.log.category."software.amazon.awssdk.request".level=DEBUG
    
    ###############################################################################
    # Quarkus framework section                                                   #
    ###############################################################################
    
    # application is run under specific user, those settings allow not clashing with other quarkus apps on the same server
    quarkus.http.body.uploads-directory=${java.io.tmpdir}/inno_osmax_core_uploads
    quarkus.management.body.uploads-directory=${java.io.tmpdir}/inno_osmax_core_uploads
    Перед запуском systemd-службы lcm измените права доступа к конфигурационному файлу, предоставив доступ только для пользователя, от имени которого она будет запускаться.

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

    Подключение к HTTP-серверу
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.http.port

    Основной порт подключения

    8081

    8081

    Подключение к HTTPS-серверу
    Настройки, описанные в разделе, являются опциональными и используются, только при подключении по протоколу SSL.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.http.insecure-requests

    Возможные значения:

    • enabled — HTTP-порт открыт;

    • disabled — HTTP-порт закрыт;

    • redirect — HTTP-порт открыт, но все запросы будут перенаправляться на HTTPS-порт

    disabled

    quarkus.http.ssl-port

    Порт для подключения к HTTPS-серверу

    8081

    quarkus.http.ssl.certificate.key-store-file

    Путь к хранилищу (keystore-файлу), где хранятся закрытые ключи и сертификаты, необходимые для установки защищенного HTTPS-соединения

    /opt/inno-lcm-core/keystore.jks

    quarkus.http.ssl.certificate.key-store-password

    Пароль для доступа к keystore-файлу

    keystore@12345

    Аутентификация и авторизация
    Параметры quarkus.kerberos.keytab-path и quarkus.kerberos.service-principal-<name/password/real> являются опциональными и взаимозаменяемыми. С точки зрения безопасности рекомендуется использовать keytab-файл для аутентификации в домене и указывать параметр quarkus.kerberos.keytab-path.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.application.auth.disabled

    Включение/выключение аутентификации Kerberos. Возможные значения: true и false

    false

    false

    quarkus.kerberos.debug

    (Опциональный параметр) включение/выключение отправки сообщений для отладки Kerberos. Возможные значения: true и false

    true

    quarkus.kerberos.service-principal-name

    (Опциональный параметр) имя принципала для аутентификации Kerberos

    lcm_backend_svc

    quarkus.kerberos.service-principal-realm

    (Опциональный параметр) наименование области безопасности (realm) принципала

    my.domain.com

    quarkus.kerberos.service-principal-password

    (Опциональный параметр) пароль принципала

    Password123

    quarkus.kerberos.keytab-path

    (Опциональный параметр) путь к keytab-файлу, который содержит зашифрованные ключи и сертификаты, необходимые для аутентификации в домене.

    /opt/inno-lcm-core/my_file.keytab

    lcm.authorization.user-groups-white-list[0]

    (Устаревший опциональный параметр) список групп LDAP, пользователи которых авторизованы в графическом интерфейсе администратора

    CN=testGroup,CN=Users,DC=inno,DC=test

    lcm.authorization.rbac.enabled

    Включение/выключение авторизации RBAC

    false

    false

    lcm.authorization.rbac.super-users[0]

    Пользователи, которым будут выданы права суперпользователя при запуске продукта. Параметр задается, если включена Авторизация RBAC (lcm.authorization.rbac.enabled=true).

    Параметр задается отдельно для каждого пользователя, начиная с 0, например:

    lcm.authorization.rbac.super-users[0]=alice@INNO.TEST
    lcm.authorization.rbac.super-users[1]=bob@INNO.TEST

    alice@INNO.TEST

    Подключение к БД
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.datasource."lcm-db".username

    Имя пользователя для подключения к БД

    lcm

    lcmadmin

    quarkus.datasource."lcm-db".password

    Пароль пользователя для подключения к БД

    password

    qwerty123

    quarkus.datasource."lcm-db".reactive.url

    Адрес подключения серверной части продукта к БД. Формат:

    pass:[postgresql://{db_host}:{db_port}/{db_name}]
    Если необходимо указать схему по умолчанию используйте синтаксис: postgresql://localhost:5432/lcm?search_path=lcm_schema_name

    postgresql://localhost:5432/lcm

    postgresql://10.6.32.156:5432/lcm

    quarkus.datasource."lcm-db".jdbc.url

    Адрес подключения к БД. Параметр используется утилитой Liquibase для актуализации схемы БД. Формат:

    pass:[jdbc:postgresql://{db_host}:{db_port}/{db_name}]

    jdbc:postgresql://localhost:5432/lcm

    jdbc:postgresql://10.6.32.156:5432/lcm

    quarkus.liquibase."lcm-db".default-schema-name

    Имя схемы данных

    lcm

    lcm

    quarkus.liquibase."lcm-db".migrate-at-start

    Включение/выключение автоматического обновления структуры БД с помощью утилиты Liquibase. Возможные значения: true и false

    True

    True

    quarkus.datasource."lcm-db-readonly".username

    Имя пользователя с правами только на чтение данных (read-only) для подключения к БД

    readonly

    lcmuser

    quarkus.datasource."lcm-db-readonly".password

    Пароль пользователя с правами только на чтение данных (read-only) для подключения к БД

    password

    lcmuserpassword

    quarkus.datasource."lcm-db-readonly".reactive.url

    Адрес подключения серверной части продукта к БД. Формат:

    pass:[postgresql://{db_host}:{db_port}/{db_name}]

    postgresql://localhost:5432/lcm

    postgresql://localhost:5432/lcm

    quarkus.datasource."lcm-db-readonly".jdbc.url

    Адрес подключения к БД. Формат:

    pass:[jdbc:postgresql://{db_host}:{db_port}/{db_name}]

    jdbc:postgresql://localhost:5432/lcm

    jdbc:postgresql://10.6.32.156:5432/lcm

    Инвентаризация оборудования
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.inventory.job-sync-collection-pillars.cron.expr

    Cron-выражение в формате quartz, которое задает частоту синхронизации состава коллекций на бэкенде продукта и на сервере управления (master) (см. описание формата в разделе «Cron-выражение формата Quartz» документа «Руководство по эксплуатации»)

    0 0/15 * ? * * *

    0/10 * * ? * * *

    lcm.inventory.job.user-sessions-cleanup.storage-days-count

    Период хранения данных истории сессий пользователей (количество дней), по истечении которого они будут удалены

    90

    90

    lcm.inventory.job.user-sessions-cleanup.cron-expr

    Cron-выражение в формате quartz, которое задает расписание удаления данных истории сессий пользователей (см. описание формата в разделе «Cron-выражение формата Quartz» документа «Руководство по эксплуатации»)

    0 0 0 ? * * *

    0 0 0 ? * * *

    lcm.inventory.machine-attribute.section.size

    Максимальное количество атрибутов устройств в одном разделе

    20

    20

    lcm.inventory.user-attribute.section.size

    Максимальное количество пользовательских атрибутов в одном разделе

    20

    20

    lcm.inventory.settings.agent.minutes-to-become-offline

    Интервал в минутах, в течение которого на агенте (minion) нет активности. По истечению этого интервала сетевой статус агента (minion) будет изменен на неактивный (offline)

    5

    5

    lcm.inventory.settings.agent.user-session-file-path

    Путь к файлу на сервере с агентом (minion), в котором хранится информация о сессиях пользователей

    /var/log/wtmp

    /var/log/wtmp

    lcm.inventory.settings.agent.active-user-session-file-path

    Путь к файлу на сервере с агентом (minion), в котором хранится информация о текущих сессиях пользователей

    /var/run/utmp

    /var/run/utmp

    lcm.inventory.settings.agent.multi-master-mode

    Включение/выключение режима «мульти-мастер»

    true

    true

    lcm.inventory.settings.agent.bootstrap-script-config-path

    Абсолютный путь до всех файлов, которые должны быть включены в архив конфигурации скрипта загрузки агентов (формат: .tar.gz).

    /config/script-configs/bootstrap/

    /config/script-configs/bootstrap/

    lcm.inventory.settings.agent.bootstrap-ssh-user

    (Опциональный параметр) имя пользователя SSH, который будет использоваться при загрузке агента (minion)

    lcm.inventory.settings.agent.bootstrap-ssh-password

    (Опциональный параметр) пароль пользователя SSH, который будет использоваться при загрузке агента (minion)

    lcm.inventory.settings.agent.bootstrap-ssh-private-key-path

    (Опциональный параметр) путь к приватному ключу SSH, который будет использоваться при загрузке агента (minion)

    Интеграция с источниками данных LDAP

    Нумерация массива lcm.inventory.ldap.datasource начинается с 0.

    Параметры подключения к домену №2 аналогичны параметрам домена №1.

    Пример:

    • lcm.inventory.ldap.datasource[1].host=192.168.0.1;

    • lcm.inventory.ldap.datasource[1].name=domain_alias2;

    • lcm.inventory.ldap.datasource[1].port=389.

    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.naming.enable-jndi

    Включение JNDI (Java Naming and Directory Interface) для обнаружения в домене MS AD при определении параметра lcm.inventory.ldap.datasource[i].dns-srv-record

    false

    true

    lcm.inventory.ldap.search-page-size

    Максимальное количество записей, которое будет возвращаться в ответ на один запрос синхронизации с LDAP-сервером. Чем больше значение, тем больше данных LDAP-серверу необходимо обработать в рамках одного запроса. Чем меньше значение, тем дольше будет выполняться синхронизация

    200

    200

    lcm.inventory.ldap.datasource[0].name

    Название источника данных (например, имя домена)

    my.domain.com

    lcm-1583.terra.inno.tech

    lcm.inventory.ldap.datasource[0].base-dn

    Базовое имя домена в формате LDAP

    DC=my,DC=domain,DC=com

    DC=lcm-1583,DC=terra,DC=inno,DC=tech

    lcm.inventory.ldap.datasource[0].username

    Имя пользователя для подключения к домену LDAP-сервера.

    Может быть указано в одном из следующих форматов:

    • <имя_пользователя>@<имя домена>, например ivanov@INNO;

    • пользователь в формате LDAP, например, CN=ivanov,CN=Users,DC=inno,DC=local

    administrator@my.domain.com

    Administrator@lcm-1583.terra.inno.tech

    lcm.inventory.ldap.datasource[0].password

    Пароль пользователя для подключения к домену LDAP-сервера

    Welkom123

    Welkom123

    Группа опциональных параметров, которые используются для явного указания пулов адресов/имен хостов с источниками данных LDAP:

    Параметры являются взаимозаменяемыми с параметром lcm.inventory.ldap.datasource[i].dns-srv-record

    lcm.inventory.ldap.datasource[i].host

    IP-адрес или сетевое имя контроллера домена (LDAP-сервера)

    10.6.32.204

    lcm.inventory.ldap.datasource[i].port

    Порт для соединения по протоколу LDAP

    389; для LDAP over SSL обычно используется порт 636

    Группа (массив) опциональных адресов/портов дополнительных LDAP-серверов (контроллеров доменов):

    Для каждого элемента массива lcm.inventory.ldap.datasource[i].extra-hosts должны быть заданы оба параметра host и port, например:

    • lcm.inventory.ldap.datasource[0].extra-hosts[0].host=reserve-server.domain.com;

    • lcm.inventory.ldap.datasource[0].extra-hosts[0].port=389;

    • lcm.inventory.ldap.datasource[0].extra-hosts[1].host=old-server.domain.com;

    • lcm.inventory.ldap.datasource[0].extra-hosts[1].port=390;

    • lcm.inventory.ldap.datasource[0].extra-hosts[2].host=test-server.domain.com;

    • lcm.inventory.ldap.datasource[0].extra-hosts[2].port=390

    lcm.inventory.ldap.datasource[i].extra-hosts[j].host

    Опциональный параметр, в котором задается хост дополнительного LDAP-сервера указанного источника (домена)

    test-server.domain.com

    lcm.inventory.ldap.datasource[i].extra-hosts[j].port

    Опциональный параметр, в котором задается порт дополнительного LDAP-сервера указанного источника (домена)

    390

    Опциональный параметр, который используются для настройки пулов имен хостов через использование записей DNS SRV для обнаружения LDAP-серверов из домена MS AD.

    Параметр является взаимозаменяемым с параметрами, описанными выше

    lcm.inventory.ldap.datasource[i].dns-srv-record

    (Опциональный параметр) Запись SRV (Service) в DNS, которая используется для обнаружения и автоматического определения конфигурации LDAP-сервера.

    Чаще всего при публикации сервисов в DNS SRV контроллеры доменов MS AD публикуют LDAP-сервис на незащищенном порту 389 (без SSL). Чтобы при такой конфигурации с автоматичекским обнаружением контроллеров домена со службами LDAP использовать защищенное соединение, рекомендуется использовать опцию lcm.inventory.ldap.datasource[i].ssl=start-tls

    ldap._tcp.dc._msdcs.mydomain.com

    Опциональные параметры:

    lcm.inventory.ldap.datasource[0].connect-timeout-millis

    Максимальная длительность подключения к LDAP-серверу в миллисекундах. Значение 0 означает бесконечное ожидание

    10000

    lcm.inventory.ldap.datasource[0].response-timeout

    Максимальная длительность выполнения запроса к LDAP-серверу в миллисекундах. Значение 0 означает бесконечное ожидание

    10000

    lcm.inventory.ldap.datasource[0].abandon-on-timeout

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

    true

    lcm.inventory.ldap.datasource[0].allow-concurrent-socket-factory-use

    Параметр, указывающий, разрешать ли использование экземпляра фабрики сокетов (который может совместно использоваться несколькими соединениями) для одновременного создания нескольких сокетов. Возможные значения: true и false

    true

    Интеграция с источниками данных LDAP по протоколу SSL
    Группы параметров, описанные ниже, являются опциональными и настраиваются при подключении к LDAP-серверу по протоколу SSL.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.inventory.ldap.datasource[i].ssl

    Параметр, отвечающий за соединение по протоколу SSL (LDAPS).

    Возможные значения:

    • false — использование LDAP без SSL (обычно порт 389);

    • true — использование LDAPS (обычно порт 636); в данном случае требуется путь к файлу сертификата или файлу хранилища доверенных сертификатов;

    • start-tls — использование небезопасного соединения (обычно порт 389) вместе с расширенной операцией StartTLS для преобразования этого небезопасного соединения в безопасное

    true

    lcm.inventory.ldap.datasource[i].trust-all-ssl-certificates

    Параметр, определяющий, будет ли система доверять всем SSL-сертификатам при подключении к LDAP-серверу

    true

    lcm.inventory.ldap.datasource[i].ssl-certificate

    Относительный или абсолютный путь к файлу с сертификатом для подключения через LDAPS. Опциональный параметр

    /opt/inno-lcm-core/samba_cert.pem

    Группа параметров, которая позволяет задать путь к файлу доверенного хранилища сертификатов отдельно для каждого источника данных LDAP (значение задается с 0):

    lcm.inventory.ldap.datasource[i].ssl-trust-store

    Путь к файлу хранилища доверенных сертификатов (truststore) для указанного источника данных LDAP

    /opt/inno-lcm-core/keystore.jks

    lcm.inventory.ldap.datasource[i].ssl-trust-store-type

    Тип хранилища доверенных сертификатов для указанного источника данных LDAP

    PKCS12

    lcm.inventory.ldap.datasource[i].ssl-trust-store-password

    Пароль для доступа к хранилищу доверенных сертификатов указанного источника данных LDAP

    keystore@12345

    Группа параметров, которая позволяет задать путь к общему доверенному хранилищу сертификатов для всех источников данных LDAP:

    lcm.inventory.ldap.ssl-trust-store

    Путь к файлу хранилища доверенных сертификатов (truststore) для источника данных LDAP

    /opt/inno-lcm-core/keystore.jks

    lcm.inventory.ldap.ssl-trust-store-type

    Тип хранилища доверенных сертификатов для источника данных LDAP, например JKS, JCEKS, P12, PKCS12, PFX

    JKS

    lcm.inventory.ldap.ssl-trust-store-password

    Пароль для доступа к хранилищу доверенных сертификатов источника данных LDAP

    keystore@12345

    Работа с пользовательским интерфейсом «Магазин приложений»
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.order-management.completion.time.hours

    Период времени (в часах), по истечению которого заявка будет считаться невыполненной

    12

    12

    lcm.order-management.autocomplete.cron.expr

    Cron-выражение в формате quartz, задающее расписание выполнения проверки долго выполняющихся заказов, после которой они будут считаться невыполненными (см. описание формата в разделе «Cron-выражение формата Quartz» документа «Руководство по эксплуатации»)

    0 0 * ? * * *

    0 0 * ? * * *

    Интеграция с Apache Kafka
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    mp.messaging.connector.smallrye-kafka.bootstrap.servers

    Адрес сервера для подключения к брокеру Apache Kafka, который будет использоваться для получения сообщений от серверов управления (masters)

    localhost:9092

    10.6.32.156:9092

    mp.messaging.incoming.salt-events-kafka.topic

    Топик Apache Kafka, из которого будут поступать сообщения

    salt-topic

    salt-topic

    Настройка SSL-соединения с Apache Kafka
    Параметры из данного блока являются опциональными и задаются, только если требуется SSL для Apache Kafka.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    mp.messaging.connector.smallrye-kafka.security.protocol

    SSL-протокол для защищенного соединения

    SSL

    mp.messaging.connector.smallrye-kafka.ssl.truststore.location

    Путь к файлу с сертификатами в хранилище доверенных сертификатов (truststore)

    /etc/ssl/certs/java/cacerts

    mp.messaging.connector.smallrye-kafka.ssl.truststore.password

    Пароль для доступа к хранилищу доверенных сертификатов

    truststore@12345

    mp.messaging.connector.smallrye-kafka.ssl.truststore.type

    Тип хранилища, например JKS, JCEKS, P12, PKCS12, PFX. Если значение не задано, по умолчанию используется значение JKS

    PKCS12

    mp.messaging.incoming.salt-events-kafka.ssl.keystore.location

    Путь к файлу с закрытыми ключами и сертификатами клиента в хранилище ключей (keystore)

    /opt/inno-lcm-core/keystore.jks

    /opt/inno-lcm-core/keystore.jks

    mp.messaging.incoming.salt-events-kafka.ssl.keystore.password

    Пароль для доступа к хранилищу ключей

    keystore@12345

    keystore@12345

    mp.messaging.connector.smallrye-kafka.ssl.keystore.type

    Тип хранилища, например JKS, JCEKS, P12, PKCS12, PFX. Если значение не задано, по умолчанию используется значение JKS

    PKCS12

    Настройки REST-клиентов
    Настройки, описанные в разделе, являются опциональными и используются, только при подключении по протоколу SSL.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.rest-client.trust-store

    Путь к файлу хранилища доверенных сертификатов (truststore), который содержит сертификаты доверенных центров сертификации

    /etc/ssl/certs/java/cacerts

    quarkus.rest-client.trust-store-password

    Пароль для доступа к хранилищу доверенных сертификатов

    truststore@12345

    quarkus.rest-client.trust-store-type

    Тип хранилища, например JKS, JCEKS, P12, PKCS12, PFX. Если значение не задано, по умолчанию используется значение JKS

    PKCS12

    quarkus.rest-client.remote-access.trust-all

    Отключение проверки SSL-соединения

    true

    Интеграция с API SaltStack
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.salt-adapter.command-runner.http-scheme

    Протокол, который будет использоваться для отправки HTTP-запросов между компонентами Salt Adapter и Command Runner модуля координации. Возможные значения: http или https

    http

    http

    lcm.salt-adapter.command-runner.master-api-port

    Порт, на котором будет запущен API-модуль сервера управления (master). Значение параметра задается для всех используемых серверов управления (masters)

    8000

    8000

    lcm.salt-adapter.command-runner.global-auth.eauth

    Тип аутентификации для запросов. Значение параметра задается для всех используемых серверов управления (masters). Возможные значения: ldap или pam. ldap — аутентификация через внешний LDAP-сервер, pam — аутентификация с помощью локальной учетной записи на машине, на которой установлен сервер управления (master).

    Если установлено значение pam, для сервера управления (master) требуется root-доступ

    pam

    pam

    lcm.salt-adapter.command-runner.global-auth.login

    Логин для подключения к серверу управления (master). Значение параметра задается для всех используемых серверов управления (masters)

    salt_api

    salt_api

    lcm.salt-adapter.command-runner.global-auth.password

    Пароль для подключения к серверу управления (master). Значение параметра задается для всех используемых серверов управления (masters)

    salt123

    salt123

    lcm.salt-adapter.command-runner.retry.number-of-attempts

    Количество попыток выполнения команды, после неудачной попытки

    5

    5

    lcm.salt-adapter.command-runner.retry.initial-back-off

    Начальное время задержки перед повторной попыткой выполнения команды после неудачной попытки

    1s

    1s

    lcm.salt-adapter.command-runner.retry.max-back-off

    Максимальное время задержки перед повторной попыткой выполнения команды. Если команда не выполняется успешно даже после максимальной задержки, она завершится ошибкой

    1s

    1s

    Опциональные параметры:

    lcm.salt-adapter.command-runner.override-masters[0].id

    Имя машины, на которой установлен сервер управления (master)

    При использовании нескольких серверов управления (masters) значение задается отдельно для каждого; нумерация массива начинается с [0]. Пример: lcm.salt-adapter.command-runner.override-masters[0].id=salt-master1, lcm.salt-adapter.command-runner.override-masters[1].id=salt-master2

    salt-master2

    lcm.salt-adapter.command-runner.override-masters[0].uri

    Полный адрес API-модуль сервера управления (master), указанного в параметре lcm.salt-adapter.command-runner.override-masters[0].id

    При использовании нескольких серверов управления (masters) значение задается отдельно для каждого; нумерация массива начинается с [0]. Пример: lcm.salt-adapter.command-runner.override-masters[0].http://192.168.0.1:8000, lcm.salt-adapter.command-runner.override-masters[0].uri=http://192.168.0.2:8000

    http://192.168.0.2:8000

    Интеграция с модулем «Удаленный доступ»
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.rest-client.remote-access.url

    URL-адрес для подключения к модулю «Удаленный доступ»

    https://guacamole-host.net:9099/guacamole

    https://guacamole-host.net:9099/guacamole

    lcm.inventory.remote-access.username

    Аккаунт для входа в модуль «Удаленный доступ»

    admin

    admin

    lcm.inventory.remote-access.password

    Пароль от аккаунта для входа в модуль «Удаленный доступ»

    12345

    12345

    Опциональные параметры, которые используются для расширенной настройки REST-клиента Quarkus модуля «Удаленный доступ»:

    quarkus.rest-client.remote-access.connect-timeout

    Таймаут соединения при обращении к удаленному серверу

    quarkus.rest-client.remote-access.trust-store

    Путь к файлу доверенных сертификатов для проверки подлинности удаленного сервера

    quarkus.rest-client.remote-access.trust-store-password

    Пароль для доступа к файлу доверенных сертификатов

    quarkus.rest-client.remote-access.trust-store-type

    Тип хранилища доверенных сертификатов (например, JKS)

    quarkus.rest-client.remote-access.key-store

    Путь к файлу с ключами (keystore) для аутентификации при обращении к удаленному серверу

    quarkus.rest-client.remote-access.key-store-password

    Пароль для доступа к файлу с ключами (keystore)

    quarkus.rest-client.remote-access.key-store-type

    Тип хранилища ключей (например, JKS)

    quarkus.rest-client.remote-access.hostname-verifier

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

    quarkus.rest-client.remote-access.connection-ttl

    Длительность соединения с удаленным сервером

    Интеграция с S3-совместимым хранилищем
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.salt-adapter.s3.server-uri-list

    URI для подключения к S3-совместимому хранилищу, в котором будут храниться файлы для SaltStack.

    Для переключения взаимодействия с S3-совместимым хранилищем по протоколу SSL:

    1. Измените URI c http на https.

    2. Разместите публичный сертификат сервера S3 или сертификат выдавшего его удостоверяющего центра в системное хранилище сертификатов

    http://10.6.32.156:9000

    lcm.salt-adapter.s3.access-key-id

    Идентификатор ключа (access Key) S3-совместимого хранилища

    s3adminSalt

    minionadmin

    lcm.salt-adapter.s3.secret-access-key

    Секретный ключ (Secret Key) S3-совместимого хранилища

    s3adminSaltPassword

    minionadmin123

    lcm.salt-adapter.s3.region

    Название региона S3 NOTE: Для хранилища Ceph данный параметр не учитывается. Если вы используете Сeph в качестве хранилища, укажите значение default

    ru-location-1

    ru-location-1

    lcm.salt-adapter.s3.connection-timeout

    Таймаут соединения с S3-совместимым хранилищем

    1s

    1s

    lcm.salt-adapter.s3.num-retries

    Максимальное количество попыток повторного подключения к S3-совместимому хранилищу после неудачного подключения

    3

    3

    lcm.salt-adapter.s3.initial-retry-delay-millis

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

    100

    100

    lcm.salt-adapter.s3.max-retry-delay-millis

    Максимальная задержка перед повторной попыткой подключения в миллисекундах

    1000

    1000

    lcm.salt-adapter.s3.state-bucket-name

    Название бакета S3 для хранения общих файлов конфигураций и файлов состояний

    salt-bucket

    salt-bucket

    lcm.salt-adapter.s3.pillar-bucket-name

    Название бакета S3 для хранения данных Pillar

    pillar-bucket

    pillar-bucket

    lcm.salt-adapter.s3.script-bucket-name

    Название бакета S3 для хранения исполняемых файлов (скриптов), предназначенных для установки агентов (minions) на устройства

    script-bucket

    script-bucket

    Хранение мультимедиа-файлов в S3-совместимом хранилище
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.multimedia.s3.server-uri-list

    URI для подключения к S3-совместимому хранилищу, в котором будут храниться мультимедиа-файлы продукта (иконки, скриншоты).

    Для переключения взаимодействия с S3-совместимым хранилищем по протоколу SSL:

    1. Измените URI c http на https.

    2. Разместите публичный сертификат сервера S3 или сертификат выдавшего его удостоверяющего центра в системное хранилище сертификатов

    http://localhost:9000,http://localhost:9900

    http://10.6.32.156:9000

    lcm.multimedia.s3.access-key-id

    Идентификатор ключа (access Key) S3-совместимого хранилища мультимедиа-контента

    s3adminMultimedia

    minioadmin

    lcm.multimedia.s3.secret-access-key

    Секретный ключ (Secret Key) S3-совместимого хранилища мультимедиа-контента для доступа к сервису S3 (пароль)

    s3adminMultimediaPassword

    minioadmin123

    lcm.multimedia.s3.region

    Название региона S3 для хранилища мультимедиа-контента NOTE: Для хранилища Ceph данный параметр не учитывается. Если вы используете Сeph в качестве хранилища, укажите значение default

    ru-location-1

    ru-location-1

    lcm.multimedia.s3.connection-timeout

    Таймаут соединения с S3-совместимым хранилищем

    1s

    1s

    lcm.multimedia.s3.num-retries

    Максимальное количество попыток повторного подключения к S3-совместимому хранилищу, после неудачного подключения

    3

    3

    lcm.multimedia.s3.initial-retry-delay-millis

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

    100

    100

    lcm.multimedia.s3.max-retry-delay-millis

    Максимальная задержка перед повторной попыткой подключения в миллисекундах

    1000

    1000

    lcm.multimedia.s3.icons-bucket-name

    Название бакета S3 для хранения иконок

    multimedia-bucket

    icons-bucket

    lcm.multimedia.s3.images-bucket-name

    Название бакета S3 для хранения изображений и скриншотов

    multimedia-bucket

    images-bucket

    lcm.multimedia.s3.others-bucket-name

    Название бакета S3 для хранения прочего контента

    multimedia-bucket

    others-bucket

    lcm.multimedia.s3.script-bucket-name

    Название бакета S3 для хранения исполняемых файлов (скриптов), предназначенных для установки агентов (minions) на устройства

    script-bucket

    script-bucket

    lcm.multimedia.common.max-file-size-kb

    Максимальный размер файла в килобайтах

    1024

    1024

    lcm.multimedia.common.frontend-uri

    URI для доступа к фронтенду

    http://localhost:8081

    http://localhost:8081

    Управление конфигурациями
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.catalog.category.configuration-limit

    Максимальное количество категорий для одной конфигурации

    5

    5

    lcm.catalog.category.total-limit

    Общее число категорий

    15

    15

    lcm.catalog.script.max-script-size-mbytes

    Максимальный размер файла скрипта установки агентов (minions) в мегабайтах

    10

    10

    Инвентаризация ПО

    Основные настройки сбора данных о ПО на устройстве выполняются в пользовательском интерфейсе «Кабинет администратора» (см. документ «Руководство администратора» раздел «Сбор данных программного обеспечения»):

    • настройка расписания сбора данных;

    • настройки ограничений:

      • возможность задать список каталогов, которые должны быть исключены из сканирования;

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

    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.inventory.software.executable-files.base-path-scan

    Базовый каталог для сканирования исполняемых файлов

    /home/

    /home/

    lcm.inventory.software.packages.sections-blacklist

    Список секций, пакеты которых должны быть исключены из сканирования. Значения указываются через запятую

    libs,non-free/libs,devel

    libs,non-free/libs,devel

    Логирование
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.log.file.enable

    Активация логирования в файл. Возможные значения: true и false

    true

    true

    quarkus.log.json.file.enable

    Включение/выключение форматирования логов в JSON при записи в файл

    true

    true

    quarkus.log.json.console.enable

    Включение/выключение форматирования логов в JSON при выводе в консоль

    false

    false

    quarkus.log.file.path

    Путь для сохранения файлов с логами продукта

    /app/inno-osmax/logs/osmax/core/osmax-core.log

    /app/inno-osmax/logs/osmax/core/osmax-core.log

    quarkus.log.file.rotation.max-file-size

    Максимальный размер одного файла с логами, после чего будет произведена ротация (создан следующий файл и продолжена запись)

    10М

    10М

    quarkus.log.file.rotation.max-backup-index

    Предельное количество сохраняемых файлов с логами при ротации

    5

    5

    quarkus.log.file.rotation.file-suffix

    Суффикс для имен файлов логов после их ротации

    .yyyy-MM-dd.gz

    .yyyy-MM-dd.gz

    quarkus.log.json.fields.mdc.flat-fields

    Параметр, который указывает, что контекст MDC (Mapped Diagnostic Context) должен быть записан в плоском формате

    true

    true

    quarkus.log.json.fields.timestamp.date-format

    Формат даты и времени для поля timestamp в JSON

    yyyy-MM-dd’T’HH:mm:ss.SSS’Z'

    yyyy-MM-dd’T’HH:mm:ss.SSS’Z'

    quarkus.log.json.fields.timestamp.zone-id

    Часовой пояс для поля timestamp в JSON

    UTC

    UTC

    quarkus.log.handler.file.audit-handler.enable

    Включение/выключение обработчика для логов аудита

    true

    true

    quarkus.log.handler.file.audit-handler.path

    Путь к файлу, в который будут записываться логи аудита

    /app/inno-osmax/audit/osmax/core/audit-osmax-core.log

    /app/inno-osmax/audit/osmax/core/audit-osmax-core.log

    quarkus.log.handler.file.audit-handler.rotation.max-file-size

    Максимальный размер файла логов аудита до переноса в исторический файл

    10M

    10M

    quarkus.log.handler.file.audit-handler.rotation.max-backup-index

    Максимальное количество резервных копий файлов логов аудита

    50

    50

    quarkus.log.handler.file.audit-handler.rotation.file-suffix

    Суффикс для имен файлов логов аудит после их ротации

    .yyyy-MM-dd

    .yyyy-MM-dd

    quarkus.log.category."AUDIT".level

    Настройка уровня логирования. Возможные значения:

    • FATAL — сообщение об ошибке, которая привела к критическому сбою программы;

    • ERROR — сообщение об ошибке, которая привела к некритическому сбою программы;

    • WARN — предупреждение о потенциальной проблеме или необычном состоянии, которое не является ошибкой, но требует внимания;

    • INFO — информационное сообщение о ходе работы программы, которое может быть полезно для мониторинга и отладки;

    • DEBUG — детальная отладочная информация, которая помогает разработчикам выявлять и исправлять проблемы в коде;

    • TRACE — cамый низкий уровень важности, предоставляющий еще более детальную информацию, которая используется для отслеживания каждого шага алгоритма или функции.

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

    quarkus.log.category.<"system module">

    Пример:

    quarkus.log.category."AUDIT".level=DEBUG

    INFO

    INFO

    quarkus.log.category."AUDIT".handlers

    Обработчик, который будет использоваться для категории "AUDIT"

    audit-handler

    audit-handler

    quarkus.log.category."AUDIT".use-parent-handlers

    Включение/выключение использования родительских обработчиков для категории "AUDIT"

    false

    false

    Отладка
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    %debug.quarkus.http.access-log.enabled

    Включение/выключение логирования доступа к HTTP-серверу (uri и статус). Возможные значения: true и false

    true

    true

    %debug.quarkus.rest-client.logging.scope

    Уровень логирования для внутреннего REST-клиента, который будет записывать информацию о запросах и ответах

    request-response

    request-response

    %debug.quarkus.rest-client.logging.body-limit

    Размер тела запроса/ответа

    500

    500

    %debug.quarkus.log.category."org.jboss.resteasy.reactive.client.logging".level

    Уровень логирования для пакета org.jboss.resteasy.reactive.client.logging

    DEBUG

    DEBUG

    %debug.quarkus.log.category."org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext".level

    Уровень логирования для класса org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext

    DEBUG

    DEBUG

    %debug.quarkus.log.category."tech.inno.lcm.salt.events".level

    Уровень логирования для событий SaltStack

    DEBUG

    DEBUG

    %debug.quarkus.log.category."tech.inno.lcm".level

    Уровень логирования для всех сервисов бэкенда, начинающихся с tech.inno.lcm

    DEBUG

    DEBUG

    %debug.quarkus.kerberos.debug

    Включение/выключение дополнительного логирования для аутентификации Kerberos. Возможные значения: true и false

    true

    true

    %debug.quarkus.log.category."io.quarkiverse.kerberos.runtime.KerberosIdentityProvider".level

    Уровень логирования для класса io.quarkiverse.kerberos.runtime.KerberosIdentityProvider

    TRACE

    TRACE

    %debug.quarkus.log.category."io.quarkiverse.kerberos.runtime.KerberosIdentityProvider".min-level

    Минимальный уровень логирования для класса io.quarkiverse.kerberos.runtime.KerberosIdentityProvider

    TRACE

    TRACE

    %debug.quarkus.log.category."software.amazon.awssdk.request".level

    Уровень логирования для категории запросов к сервисам Amazon AWS SDK

    DEBUG

    DEBUG

    Фреймворк Quarkus
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.http.body.uploads-directory

    Каталог для временного хранения файлов, загружаемых посредством API

    ${java.io.tmpdir}/inno_osmax_core_uploads

    ${java.io.tmpdir}/inno_osmax_core_uploads

    quarkus.management.body.uploads-directory

    Каталог для временного хранения файлов, загружаемых посредством служебных API

    ${java.io.tmpdir}/inno_osmax_core_uploads

    ${java.io.tmpdir}/inno_osmax_core_uploads

    Установка пакета inno-lcm-provisioner

    Чтобы установить пакет inno-lcm-provisioner, выполните команду:

    sudo apt install ./<пакет>

    Пример:

    sudo apt install ./sudo apt install ./inno-lcm-provisioner_1.0.0-1_amd64.deb

    После успешной установки пакета:

    1. Создан конфигурационный файл с настройками по умолчанию — /opt/inno-lcm-provisioner/application.properties (описание настроек см. в разделе «Конфигурация бэкенда»).

      В случае когда выполняется обновление продукта до более новой версии, файл application.properties будет оставаться неизменным, но дополнительно будет создаваться файл application.example.properties. Этот файл будет носить ознакомительный характер и использоваться в качестве примера для самостоятельного переопределения параметров в конфигурационном файле application.properties.
    2. Создана systemd-служба inno-lcm-provisioner.

      При установке пакета inno-lcm-provisioner автоматически создается пользователь inno-osmax-provisioner, от имени которого будет запускаться systemd-служба inno-lcm-provisioner. При обновлении или удалении пакета пользователь удален не будет.
    Конфигурация модуля inno-lcm-provisioner

    Конфигурация бэкенда выполняется в файле application.properties, помещенном в каталог /opt/inno-lcm-provisioner. Файл создается автоматически при установке deb-пакета inno-lcm-provisioner и содержит значения по умолчанию.

    Пример конфигурационного файла с настройками по умолчанию

    ## This is an example of `application.properties` file as main configuration file for lcm-provisioner backend
    
    ###############################################################################
    # HTTP server properties section                                              #
    ###############################################################################
    
    ## Main application port
    quarkus.http.port=8082
    
    ###############################################################################
    # Security section                                                            #
    ###############################################################################
    
    ## Enable/disable authentication
    lcm.provisioner.security.disable-authentication=false
    
    ## Kerberos authentication configuration section
    ## There are 2 alternative options for defining Kerberos credentials [principal realm, name and password]:
    ## 1) via setting values in properties directly
    ## 2) via setting path to keytab file
    ##
    ## Direct Kerberos credentials definition:
    quarkus.kerberos.service-principal-name=<service_principal_name>
    quarkus.kerberos.service-principal-realm=<service.domain>
    quarkus.kerberos.service-principal-password=<service_principal_password>
    ## Kerberos keytab file definition:
    #quarkus.kerberos.keytab-path=</path/to/keytab/file>
    ## Enables Kerberos authentication debug mode
    #quarkus.kerberos.debug=true
    
    ###############################################################################
    # Database properties section                                                 #
    ###############################################################################
    
    ## Common configuration for datasources
    quarkus.datasource.username=<db-username>
    quarkus.datasource.password=<db-password>
    ## Reactive datasource configuration for app
    quarkus.datasource.reactive.url=postgresql://<db-host>:<db-port>/<db-name>
    ## Datasource configuration for Liquibase
    quarkus.datasource.jdbc.url=jdbc:postgresql://<db-host>:<db-port>/<db-name>
    
    ## Liquibase parameters which are used in changelog files
    quarkus.liquibase.change-log-parameters.index_tablespace=pg_default
    quarkus.liquibase.change-log-parameters.data_tablespace=pg_default
    quarkus.liquibase.change-log-parameters.installation_distro_repository_url=http://<astra-linux-repository-location>
    quarkus.liquibase.change-log-parameters.installation_distro_kernel=</path/to/kernel>
    quarkus.liquibase.change-log-parameters.installation_distro_initrd=</path/to/initrd>
    quarkus.liquibase.change-log-parameters.distro_repository_hostname=<astra-linux-repository-location>
    quarkus.liquibase.change-log-parameters.distro_repository_directory=</path/to/repository>
    
    ###############################################################################
    # Template engine properties section                                          #
    ###############################################################################
    
    ## To specify custom template placeholders which can be used in Jinja templates use a key-value format like
    ## 'lcm-provisioner.template-engine.template-placeholders.my-custom-placeholder=my-value-for-custom-placeholder'
    ## Be aware that specified custom template placeholders
    ## should be used in exact format as they are specified in this configuration
    lcm.provisioner.template-engine.template-placeholders.osmax_provisioner_base_url=http://<osmax-provisioner-host>:<port>
    lcm.provisioner.template-engine.template-placeholders.unattended_install_file_url=/v1/unattended_install_files
    
    ###############################################################################
    # Installation process properties section                                     #
    ###############################################################################
    
    lcm.provisioner.installation-process.steps.READY_TO_INSTALL=\u0413\u043E\u0442\u043E\u0432\u043E \u043A \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0435
    lcm.provisioner.installation-process.steps.IN_PROCESS_EARLY=\u0417\u0430\u043F\u0443\u0449\u0435\u043D \u043F\u0440\u043E\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 Astra Linux SE
    lcm.provisioner.installation-process.steps.INSTALL_ERROR_KERNEL=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 kernel
    lcm.provisioner.installation-process.steps.INSTALL_ERROR_INITRD=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 initrd
    lcm.provisioner.installation-process.steps.INSTALL_ERROR_BOOT=\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438 \u044F\u0434\u0440\u0430
    lcm.provisioner.installation-process.steps.FINISHED=\u041E\u0421 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430
    
    ###############################################################################
    # S3 integration section                                                      #
    ###############################################################################
    
    ## S3 server configuration
    lcm.provisioner.s3.server-uri=http://<s3-host>:<s3-port>
    lcm.provisioner.s3.access-key-id=<s3-access-key-id>
    lcm.provisioner.s3.secret-access-key=<s3-secret-access-key>
    lcm.provisioner.s3.region=ru-location-1
    
    ## Path to ISO images bucket where generated ISO images will be located
    lcm.provisioner.s3.bootable-images-bucket-name=os-installation-iso-images-bucket
    
    ###############################################################################
    # Logging section                                                             #
    ###############################################################################
    
    # Common logging config
    quarkus.log.file.enable=true
    quarkus.log.json.file.enable=true
    quarkus.log.json.console.enable=false
    
    # Json log format config
    quarkus.log.json.fields.mdc.flat-fields=true
    quarkus.log.json.fields.timestamp.date-format=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
    quarkus.log.json.fields.timestamp.zone-id=UTC
    
    # File logging config
    quarkus.log.file.path=/app/inno-osmax/logs/osmax/provisioner/osmax-provisioner.log
    quarkus.log.file.rotation.max-file-size=10M
    quarkus.log.file.rotation.max-backup-index=5
    quarkus.log.file.rotation.file-suffix=.yyyy-MM-dd.gz
    
    # Audit logging config
    quarkus.log.handler.file.audit-handler.enable=true
    quarkus.log.handler.file.audit-handler.path=/app/inno-osmax/audit/osmax/provisioner/audit-osmax-provisioner.log
    quarkus.log.handler.file.audit-handler.rotation.max-file-size=10M
    quarkus.log.handler.file.audit-handler.rotation.max-backup-index=50
    quarkus.log.handler.file.audit-handler.rotation.file-suffix=.yyyy-MM-dd
    quarkus.log.category."AUDIT".level=INFO
    quarkus.log.category."AUDIT".handlers=audit-handler
    quarkus.log.category."AUDIT".use-parent-handlers=false
    Перед запуском systemd-службы inno-lcm-provisioner измените права доступа к конфигурационному файлу, предоставив доступ только для пользователя, от имени которого она будет запускаться.

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

    Подключение к HTTP-серверу
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.http.port

    Основной порт подключения

    8082

    8082

    Аутентификация и авторизация
    Параметры quarkus.kerberos.keytab-path и quarkus.kerberos.service-principal-<name/password/real> являются опциональными и взаимозаменяемыми. С точки зрения безопасности рекомендуется использовать keytab-файл для аутентификации в домене и указывать параметр quarkus.kerberos.keytab-path.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.provisioner.security.disable-authentication

    Включение/выключение аутентификации Kerberos. Возможные значения: true и false

    false

    false

    quarkus.kerberos.service-principal-name

    (Опциональный параметр) имя принципала для аутентификации Kerberos

    <service_principal_name>

    quarkus.kerberos.service-principal-realm

    (Опциональный параметр) наименование области безопасности (realm) принципала

    <service.domain>

    quarkus.kerberos.service-principal-password

    (Опциональный параметр) пароль принципала

    <service_principal_password>

    quarkus.kerberos.keytab-path

    (Опциональный параметр) путь к keytab-файлу, который содержит зашифрованные ключи и сертификаты, необходимые для аутентификации в домене.

    </path/to/keytab/file>

    /opt/inno-provisioner/my_file.keytab

    quarkus.kerberos.debug

    (Опциональный параметр) включение/выключение отправки сообщений для отладки Kerberos. Возможные значения: true и false

    true

    Подключение к БД
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.datasource.username

    Имя пользователя для подключения к БД

    <db-username>

    db-provisioner-user

    quarkus.datasource.password

    Пароль пользователя для подключения к БД

    <db-password>

    db-qwerty123

    quarkus.datasource.reactive.url

    Адрес подключения серверной части продукта к БД

    postgresql://<db-host>:<db-port>/<db-name>

    postgresql://10.6.32.156:5432:db-8082/db-provisioner

    quarkus.datasource.jdbc.url

    Адрес подключения к БД. Параметр используется утилитой Liquibase для актуализации схемы БД

    jdbc:postgresql://<db-host>:<db-port>/<db-name>

    jdbc:postgresql://10.6.32.157:8082/lcm

    quarkus.liquibase.change-log-parameters.index_tablespace

    Таблица пространства имен (tablespace) для индексов, создаваемых Liquibase

    pg_default

    pg_default

    quarkus.liquibase.change-log-parameters.data_tablespace

    Таблица пространства имен (tablespace) для данных, создаваемых Liquibase

    pg_default

    pg_default

    quarkus.liquibase.change-log-parameters.installation_distro_repository_url

    URL-адрес репозитория, который используется для установки дистрибутива

    http://<astra-linux-repository-location>

    quarkus.liquibase.change-log-parameters.installation_distro_kernel

    Путь к ядру дистрибутива, которое используется при установке

    </path/to/kernel>

    quarkus.liquibase.change-log-parameters.installation_distro_initrd

    Путь к initrd (initial ramdisk) дистрибутива, которое используется при установке

    </path/to/initrd>

    quarkus.liquibase.change-log-parameters.distro_repository_hostname

    Имя хоста репозитория c дистрибутивами устанавливаемой ОС

    <astra-linux-repository-location>

    quarkus.liquibase.change-log-parameters.distro_repository_directory

    Путь к директории репозитория

    </path/to/repository>

    Параметры шаблонов установки ОС
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm-provisioner.template-engine.template-placeholders.my-custom-placeholder

    Пользовательский заполнитель (placeholder) шаблона, который может использоваться в шаблонах Jinja; задается в формате «ключ - значение»; например, пользовательскому заполнителю шаблона с именем my-custom-placeholder присвоено значение my-value-for-custom-placeholder

    my-value-for-custom-placeholder

    lcm.provisioner.template-engine.template-placeholders.osmax_provisioner_base_url

    Базовый URL модуля установки ОС

    http://<osmax-provisioner-host>:<port>

    lcm.provisioner.template-engine.template-placeholders.unattended_install_file_url

    URL-адрес API модуля inno-lcm-provisioner, предоставляющего файл автоответов, сформированный по шаблону

    /v1/unattended_install_files

    Параметры отображения шагов в истории процесса установки
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.provisioner.installation-process.steps.<step_code>

    Преобразование названий шагов (событий) процесса установки ОС в русскоязычные значения для отображения в пользовательском интерфейсе «Кабинет Администратора». Значения по умолчанию:

    • READY_TO_INSTALL — ОС готова к установке;

    • IN_PROCESS_EARLY — ОС в процессе установки;

    • INSTALL_ERROR_KERNEL — ошибка в процессе установки ОС, связанная с ядром (kernel);

    • INSTALL_ERROR_INITRD — ошибка в процессе установки ОС, связанная с Initial RAM Disk;

    • INSTALL_ERROR_BOOT — ошибка в процессе установки ОС, связанная с загрузочным процессом;

    • FINISHED — установка ОС завершена.

    При необходимости вы можете отредактировать данные параметры или задать дополнительные шаги

    \u0413\u043E\u0442\u043E\u0432\u043E \u043A \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0435

    Интеграция с S3-совместимым хранилищем
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.provisioner.s3.server-uri

    URI для подключения к S3-совместимому хранилищу, в котором будут храниться файлы модуля inno-lcm-provisioner.

    Для переключения взаимодействия с S3-совместимым хранилищем по протоколу SSL:

    1. Измените URI c http на https.

    2. Разместите публичный сертификат сервера S3 или сертификат выдавшего его удостоверяющего центра в системное хранилище сертификатов

    http://<s3-host>:<s3-port>

    http://10.6.32.156:9000

    lcm.provisioner.s3.access-key-id

    Идентификатор ключа (access Key) S3-совместимого хранилища

    <s3-access-key-id>

    provisioneradmin

    lcm.provisioner.s3.secret-access-key

    Секретный ключ (Secret Key) S3-совместимого хранилища

    <s3-secret-access-key>

    provisioneradmin

    lcm.provisioner.s3.region

    Название региона S3 NOTE: Для хранилища Ceph данный параметр не учитывается. Если вы используете Сeph в качестве хранилища, укажите значение default

    ru-location-1

    ru-location-1

    lcm.provisioner.s3.bootable-images-bucket-name

    Путь к бакету, в котором хранятся ISO-образы

    os-installation-iso-images-bucket

    os-installation-iso-images-bucket

    Логирование
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.log.file.enable

    Активация логирования в файл. Возможные значения: true и false

    true

    true

    quarkus.log.json.file.enable

    Включение/выключение форматирования логов в JSON при записи в файл

    true

    true

    quarkus.log.json.console.enable

    Включение/выключение форматирования логов в JSON при выводе в консоль

    false

    false

    quarkus.log.json.fields.mdc.flat-fields

    Параметр, который указывает, что контекст MDC (Mapped Diagnostic Context) должен быть записан в плоском формате

    true

    true

    quarkus.log.json.fields.timestamp.date-format

    Формат даты и времени для поля timestamp в JSON

    yyyy-MM-dd’T’HH:mm:ss.SSS’Z'

    yyyy-MM-dd’T’HH:mm:ss.SSS’Z'

    quarkus.log.json.fields.timestamp.zone-id

    Часовой пояс для поля timestamp в JSON

    UTC

    UTC

    quarkus.log.file.path

    Путь для сохранения файлов с логами продукта

    /app/inno-osmax/logs/osmax/provisioner/osmax-provisioner.log

    /app/inno-osmax/logs/osmax/provisioner/osmax-provisioner.log

    quarkus.log.file.rotation.max-file-size

    Максимальный размер одного файла с логами, после чего будет произведена ротация (создан следующий файл и продолжена запись)

    10М

    10М

    quarkus.log.file.rotation.max-backup-index

    Предельное количество сохраняемых файлов с логами при ротации

    5

    5

    quarkus.log.file.rotation.file-suffix

    Суффикс для имен файлов логов после их ротации

    .yyyy-MM-dd.gz

    .yyyy-MM-dd.gz

    quarkus.log.handler.file.audit-handler.enable

    Включение/выключение обработчика для логов аудита

    true

    true

    quarkus.log.handler.file.audit-handler.path

    Путь к файлу, в который будут записываться логи аудита

    /app/inno-osmax/audit/osmax/provisioner/audit-osmax-provisioner.log

    /app/inno-osmax/audit/osmax/provisioner/audit-osmax-provisioner.log

    quarkus.log.handler.file.audit-handler.rotation.max-file-size

    Максимальный размер файла логов аудита до переноса в исторический файл

    10M

    10M

    quarkus.log.handler.file.audit-handler.rotation.max-backup-index

    Максимальное количество исторических файлов логов аудита

    50

    50

    quarkus.log.handler.file.audit-handler.rotation.file-suffix

    Суффикс для имен файлов логов аудита после их ротации

    .yyyy-MM-dd

    .yyyy-MM-dd

    quarkus.log.category."AUDIT".level

    Настройка уровня логирования. Возможные значения:

    • FATAL — сообщение об ошибке, которая привела к критическому сбою программы;

    • ERROR — сообщение об ошибке, которая привела к некритическому сбою программы;

    • WARN — предупреждение о потенциальной проблеме или необычном состоянии, которое не является ошибкой, но требует внимания;

    • INFO — информационное сообщение о ходе работы программы, которое может быть полезно для мониторинга и отладки;

    • DEBUG — детальная отладочная информация, которая помогает разработчикам выявлять и исправлять проблемы в коде;

    • TRACE — cамый низкий уровень важности, предоставляющий еще более детальную информацию, которая используется для отслеживания каждого шага алгоритма или функции.

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

    quarkus.log.category.<"system module">

    Пример:

    quarkus.log.category."AUDIT".level=DEBUG

    INFO

    INFO

    quarkus.log.category."AUDIT".handlers

    Обработчик, который будет использоваться для категории "AUDIT"

    audit-handler

    audit-handler

    quarkus.log.category."AUDIT".use-parent-handlers

    Включение/выключение использования родительских обработчиков для категории "AUDIT"

    false

    false

    Запуск службы inno-lcm-provisioner

    Чтобы запустить systemd-службу inno-lcm-provisioner, выполните команду:

    sudo systemctl start <имя службы>

    Пример:

    sudo systemctl start inno-lcm-provisioner

    Для включения автозапуска systemd-службы inno-lcm-provisioner используйте команду:

    sudo systemctl enable inno-lcm-provisioner

    Для проверки статуса запуска службы используйте команду:

    sudo systemctl status inno-lcm-provisioner

    В случае успешного запуска система вернет ответ, где в поле Active будет указано значение active (running):

    systemctl status inno-lcm-provisioner
    ● inno-lcm-provisioner.service - LCM Provisioner Service
       Loaded: loaded (/etc/systemd/system/inno-lcm-provisioner.service; enabled; vendor preset: enabled)
       Active: active (running) since Fri 2024-06-21 12:58:28 MSK; 12s ago
     Main PID: 130308 (inno-lcm-provis)
        Tasks: 32 (limit: 19048)
       Memory: 200.3M
       CGroup: /system.slice/inno-lcm-provisioner.service
               └─130308 /opt/inno-lcm-provisioner/bin/inno-lcm-provisioner

    При неуспешном запуске поле Active будет содержать иное значение. В этом случае проверьте логи системы (см. раздел «Рекомендации по сбору и предоставлению информации о проблеме/ошибке» документа «Руководство по эксплуатации»).

    Установка и настройка фронтенда продукта

    Установку фронтенда можно выполнить как на отдельном сервере, так и на сервере вместе с бэкендом продукта.

    Фронтенд продукта включает два отдельных модуля:

    • inno-lcm-webadmin — «Кабинет администратора»;

    • inno-lcm-app-shop — «Магазин приложений».

    Каждый модуль устанавливается отдельно с помощью одноименного deb-пакета. Модули устанавливаются одинаково.

    Установите пакеты inno-lcm-webadmin и inno-lcm-app-shop, выполнив команду:

    sudo apt install ./<имя пакета>

    Пример:

    sudo apt install ./inno-lcm-webadmin_1.6.0-1_all.deb
    sudo apt install ./inno-lcm-app-shop_1.6.0-1_all.deb

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

    apt list | grep "<имя модуля>"

    Пример:

    apt list | grep "inno-lcm-webadmin"
    apt list | grep "inno-lcm-app-shop"

    В случае успешной установки система вернет ответ:

    inno-lcm-webadmin/1.7_x86-64,now 1.6.0 all [установлен]

    В случае неуспешной установки проверьте логи системы (см. раздел «Рекомендации по сбору и предоставлению информации о проблеме/ошибке» документа «Руководство по эксплуатации»).

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

    • /var/www/lcm-web-ui;

    • /var/www/lcm-app-shop-ui.

    Для корректной работы модулей настройте веб-сервер. Для этого создайте необходимые конфигурационные файлы и переопределите в них значения параметров.

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

    Ниже в качестве примера рассмотрена конфигурация веб-сервера для модуля inno-lcm-webadmin.

    Конфигурация веб-сервера (на примере Nginx)

    Чтобы задать рабочую конфигурацию, выполните действия:

    1. Создайте конфигурационный файл, выполнив команду:

      sudo nano /etc/nginx/conf.d/lcm-web-ui.conf

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

      server {
          listen      80;
          listen      [::]:80;
          server_name staging-osmax.terra.inno.tech osmax-web-ui.lcm.terra.inno.tech osmax-web-ui osmax-web-ui.local;
          root        /var/www/lcm-web-ui;
          index       index.html;
      
          error_log   /var/log/nginx/error.log debug;
          access_log  /var/log/nginx/access.log;
      
          location / {
              try_files $uri $uri/ /index.html;
          }
      
          location /api/provisioner {
              set $backend_uri http://127.0.0.1:8082;
              rewrite ^\/api/provisioner(\/.*)$ $1 break;
              proxy_pass $backend_uri;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
          }
      
          location /api {
              set $backend_uri http://127.0.0.1:8081;
              rewrite ^\/api(\/.*)$ $1 break;
              proxy_pass $backend_uri;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
          }
      }
      
      server {
          listen      443 ssl;
          listen      [::]:443 ssl;
          server_name staging-osmax.terra.inno.tech osmax-web-ui.lcm.terra.inno.tech osmax-web-ui osmax-web-ui.local;
          root        /var/www/lcm-web-ui;
          index       index.html;
      
          ssl_certificate     /etc/certs/TERRA_INNO_TECH_CRT;
          ssl_certificate_key /etc/certs/TERRA_INNO_TECH_KEY;
      
          error_log  /var/log/nginx/error.log debug;
          access_log /var/log/nginx/access.log;
      
          location / {
              try_files $uri $uri/ /index.html;
          }
      
          location /api/provisioner {
              set $backend_uri http://127.0.0.1:8082;
              rewrite ^\/api/provisioner(\/.*)$ $1 break;
              proxy_pass $backend_uri;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
          }
      
          location /api {
              set $backend_uri http://127.0.0.1:8081;
              rewrite ^/api(/.*)$ $1 break;
              proxy_pass $backend_uri;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
          }
      }

      Где:

      • listen — настраивает прослушивание портов на сервере;

      • server_name  — доменное имя, которое будет обслуживаться сервером;

      • root — указывает директорию, в которой находятся статические файлы, отображаемые при запросе корневой директории;

      • index — задает стандартный файл, который будет отображаться при запросе корневой директории;

      • ssl_certificate — указывает SSL -сертификат для обеспечения безопасного соединения;

      • ssl_certificate_key — определяет путь к файлу приватного ключа SSL-сертификата;

      • error_log — указывает файл логов для логирования ошибок;

      • access_log — указывает файл логов для логирования ошибок доступа;

      • location / — указывает веб-серверу на поиск запрашиваемых файлов в директории root; и если файл будет не найден, указывает на файл index.html;

      • location /api/provisioner — настраивает проксирование запросов к API-серверу модуля inno-lcm-provisioner;

      • location /api —  настраивает проксирование запросов к API-серверу модуля inno-lcm-core;

        При установке фронтенда на отдельный сервер, в параметре set $backend_uri укажите корректный адрес бэкенда.
        • proxy_pass — директива, перенаправляющая запросы к /api на указанный бэкенд;

        • proxy_set_header — директива, устанавливающая необходимую информацию в заголовках запроса.

    2. Для передачи данных по HTTP переопределите значения только в первом блоке server; для передачи по HTTPS — также переопределите значения во втором блоке.

      1. В первом блоке server в поле server_name укажите имя домена.

      2. В первом блоке server в поле location /api/provisioner задайте адрес обращения к бэкенду (inno-lcm-provisioner).

      3. В первом блоке server в поле location /api задайте адрес обращения к бэкенду (inno-lcm-core).

      4. (Опционально) во втором блоке server в поле server_name укажите имя домена.

      5. (Опционально) во втором блоке server в поле location /api/provisioner задайте адрес обращения к бэкенду (inno-lcm-provisioner).

      6. (Опционально) во втором блоке server в поле location /api задайте адрес обращения к бэкенду (inno-lcm-core).

      7. (Опционально) в поле ssl_certificate укажите SSL-сертификат для обеспечения безопасного соединения.

      8. (Опционально) в поле ssl_certificate_key задайте путь к файлу приватного ключа SSL-сертификата.

    3. Активируйте файл в конфигурации веб-сервера, создав для него символическую ссылку в каталоге /etc/nginx/sites-enabled/:

      ln -s /etc/nginx/sites-available/lcm-web-ui.conf /etc/nginx/sites-enabled/
    4. Перезапустите веб-сервер, выполнив команду:

      systemctl restart nginx.service
    5. Убедитесь, что веб-сервер успешно работает, выполнив команду:

      systemctl status nginx.service

      В случае успешного запуска система вернет ответ:

      ● nginx.service - A high performance web server and a reverse proxy server
         Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
         Active: active (running) since Fri 2024-02-09 16:21:31 MSK; 4s ago
           Docs: man:nginx(8)
        Process: 23739 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
        Process: 23740 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
       Main PID: 23741 (nginx)
          Tasks: 3 (limit: 4653)
         Memory: 2.2M
         CGroup: /system.slice/nginx.service
                 ├─23741 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
                 ├─23742 nginx: worker process
                 └─23743 nginx: worker process
      
      фев 09 16:21:31 lr-441246-cm-1 systemd[1]: Starting A high performance web server and a reverse proxy server...
      фев 09 16:21:31 lr-441246-cm-1 systemd[1]: Started A high performance web server and a reverse proxy server.

      В качестве дополнительной простой проверки вы можете выполнить запрос посредством утилиты curl на доменное имя, указанное в параметре server_name:

      curl -I domain-of-your-lcm-web-ui.vpn.company.com
      HTTP/1.1 200 OK
      Server: nginx/1.22.1
      Date: Fri, 09 Feb 2024 13:32:44 GMT
      Content-Type: text/html
      Content-Length: 551
      Last-Modified: Tue, 06 Feb 2024 12:20:20 GMT
      Connection: keep-alive
      ETag: "65c22404-227"
      Accept-Ranges: bytes

    Установка модуля fluent-bit

    Установка модуля fluent-bit является опциональной и выполняется после установки модуля координации (SaltStack), бэкенда и фронтенда, в случае если вы используете Fluent Bit для сбора, преобразования и передачи лог-файлов аудита в систему-получатель.

    Подробную информацию об использовании и настройке Fluent Bit см. в официальной документации.

    Чтобы установить модуль fluent-bit, выполните шаги:

    1. Скачайте и распакуйте архив с модулем fluent-bit.

    2. Установите модуль fluent-bit.

    3. Выполните конфигурирование модуля fluent-bit.

    4. Запустите модуль fluent-bit

    Скачивание и распаковка архива с модулем fluent-bit

    Чтобы скачать и распаковать архив с модулем fluent-bit, выполните следующие шаги:

    1. Скачайте архив с deb-пакетом требуемой версии и соответствующие файлы контрольных сумм из предоставленного хранилища любым доступным способом.

    2. (Опционально) убедитесь в целостности архива, сравнив его контрольные суммы с контрольными суммами в соответствующих файлах.

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

      shasum -a 512 -c inno-fluent-bit-3.0.7.tar.gz inno-fluent-bit-3.0.7.tar.gz.sha512
    3. Перенесите скачанный архив на машину, на которой установлен бэкенд продукта, выполнив команду scp (secure copy):

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

      scp inno-fluent-bit-3.0.7.tar.gz 10.6.32.218
    4. Создайте временный каталог для распаковки и распакуйте архив.

      Пример команд для создания каталога и распаковки архива:

      mkdir fluent-bit
      tar xvf inno-fluent-bit-3.0.7.tar.gz -C inno-lcm

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

      x fluent-bit_3.0.7_amd64.deb

    Установка модуля fluent-bit

    На сервере, на котором установлен бэкенд продукта, установите пакет с модулем fluent-bit, выполнив команду:

    sudo apt-get install ./<имя пакета>

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

    sudo apt install ./fluent-bit_3.0.7_amd64.deb

    Конфигурация модуля fluent-bit

    После установки для корректной работы модуля fluent-bit выполните следующие настройки:

    1. Отредактируйте юнит-файл systemd /lib/systemd/system/fluent-bit.service для службы fluent-bit: в поле ExecStart, где указывается команда для запуска службы, замените .conf на .yaml:

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

      [Unit]
      Description=Fluent Bit
      Documentation=https://docs.fluentbit.io/manual/
      Requires=network.target
      After=network.target
      
      [Service]
      Type=simple
      EnvironmentFile=-/etc/sysconfig/fluent-bit
      EnvironmentFile=-/etc/default/fluent-bit
      ExecStart=/opt/fluent-bit/bin/fluent-bit -c //etc/fluent-bit/fluent-bit.yaml
      Restart=always
      
      [Install]
      WantedBy=multi-user.target
    1. Создайте конфигурационные файлы службы fluent-bit:

    1. /etc/fluent-bit/fluent-bit.yaml — главный файл конфигурации службы fluent-bit, который определяет параметры и настройки для сбора и передачи данных.

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

      ---
      service:
          flush: 1
          daemon: Off
          log_level: info
          parsers_file: parsers-audit-osmax-core.conf
          plugins_file: plugins.conf
          http_server: Off
          http_listen: 0.0.0.0
          http_port: 2020
      
      includes:
          - pipeline-inputs.yaml
          - pipeline-filters.yaml
          - pipeline-outputs.yaml

      Где:

      • service — служебный раздел, определяющий настройки службы fluent-bit:

        • flush — интервал сброса;

        • daemon — режим демона;

        • log_level — уровень журналирования;

        • parsers_file — файл с парсером;

        • plugins_file — файл с плагинам;

        • http_server — настройки HTTP-сервера;

        • http_listen — адрес прослушивания;

        • http_port — порт.

      • includes — файлы конфигурации, включенные в основной файл конфигурации:

        • pipeline-inputs.yaml — файл, описывающий источники входных данных;

        • pipeline-filters.yaml — файл, содержащий фильтры, применяющиеся к входящим данным для их обработки и преобразования;

        • pipeline-outputs.yaml — файл, в котором указываются конечные точки, куда должны быть отправлены обработанные данные после прохождения через фильтры.

    1. /etc/fluent-bit/parsers-audit-osmax-core.conf — файл для настройки парсеров, которые выполняют разбор (парсинг) логов аудита.

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

      [PARSER]
          Name        audit-osmax-core
          Format      json
          Time_Key    timestamp
          Time_Format %Y-%m-%dT%H:%M:%S.%L%z

      Где:

      • [PARSER] — секция, в которой задаются настройки используемых парсеров:

        • Name — имя парсера, который используется для анализа соответствующих записей при обработке данных журнала;

        • Format — формат входных данных для парсера;

        • Time_Key — ключ во входных данных, который содержит информацию о времени;

        • Time_Format — формат времени, используемый для разбора временных меток.

    1. /etc/fluent-bit/pipeline-inputs.yaml — файл, описывающий источники входных данных.

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

      ---
      pipeline:
          inputs:
            - name: tail
              path: /app/inno-osmax/audit/osmax/core/audit-osmax-core.log
              db: /app/inno-osmax/audit/osmax/core/audit-osmax-core-fluent-bit.db
              parser: audit-osmax-core

      Где:

      • inputs — список источников данных, из которых Fluent Bit читает информацию;

        • name — тип входного источника данных;

        • path — путь к файлу журнала, из которого Fluent Bit считывает данные;

        • db — путь к базе данных, используемой Fluent Bit для хранения состояния чтения файла журнала;

        • parser — парсер, который используется для обработки данных из указанного файла журнала.

    1. /etc/fluent-bit/pipeline-filters.yaml — файл, содержащий фильтры, которые применяются к входящим данным для их обработки и преобразования.

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

      ---
      pipeline:
          filters:
            - name: record_modifier
              match: '*'
              Allowlist_key:
                  - correlationId
                  - type
                  - code
                  - object.id
                  - object.name
                  - class
                  - message
                  - initiator.sub
                  - ipAddress
                  - context.sessionId
                  - context.url
                  - context.method
                  - context.traceId
                  - context.spanId
                  - additionalParams.action
                  - additionalParams.сomponentName
                  - additionalParams.collectionId
                  - additionalParams.collectionName
                  - additionalParams.configurationId
                  - additionalParams.configurationName
                  - additionalParams.configurationPackageName
                  - additionalParams.configurationVersionId
                  - additionalParams.configurationVersionName
                  - additionalParams.datasourceName
                  - additionalParams.roleName
                  - additionalParams.userName
                  - additionalParams.trigger
                  - additionalParams.installation
                  - additionalParams.minion
                  - additionalParams.store
                  - additionalParams.formula
                  - additionalParams.fileName
                  - additionalParams.turn
                  - additionalParams.object
                  - additionalParams.format
                  - additionalParams.relativeConfigurationId
                  - additionalParams.reportName
                  - additionalParams.user
                  - additionalParams.fqdn
                  - additionalParams.hostName
                  - additionalParams.mac
                  - additionalParams.salt_file_name
                  - additionalParams.salt_file_status
                  - additionalParams.import_result
                  - additionalParams.protocol
                  - additionalParams.softName
                  - scmCategory
      
            - name: modify
              match: '*'
              condition: Key_Does_Not_Exist object.name
              add: object.name ""
      
            - name: modify
              match: '*'
              condition: Key_Does_Not_Exist scmCategory
              add: scmCategory ""
      
            - name: modify
              match: '*'
              add: initiator.channel <customer-channel>
              add: deploymentContext.namespace <customer-namespace>
              add: deploymentContext.podName <customer-podName>
      
            - name: nest
              match: '*'
              operation: nest
              wildcard: object.*
              nest_under: object
              remove_prefix: object.
      
            - name: nest
              match: '*'
              operation: nest
              wildcard: initiator.*
              nest_under: initiator
              remove_prefix: initiator.
      
            - name: nest
              match: '*'
              operation: nest
              wildcard: context.*
              nest_under: context
              remove_prefix: context.
      
            - name: nest
              match: '*'
              operation: nest
              wildcard: deploymentContext.*
              nest_under: deploymentContext
              remove_prefix: deploymentContext.
      
            - name: nest
              match: '*'
              operation: nest
              wildcard: additionalParams.*
              nest_under: additionalParams
              remove_prefix: additionalParams.
      
            - name: modify
              match: '*'
              copy: message operation
              copy: message title
              add: infoSystemCode 2158
              add: infoSystemId SCMM
              add: version 1.0
              add: mandatory true
              add: ipNearbyNode <customer-ipNearbyNode>
              add: ipRecepient <customer-ipRecepient>
      
            - name: modify
              match: '*'
              condition: Key_Exists exception
              hard_copy: exception message

      Где:

      • record_modifier — фильтр, который используется для изменения или модификации записей журналов, например, для добавления, изменения или удаление полей в записях журналов;

      • modify — фильтр, который также используется для изменения или модификации записей журналов, например, для изменения значений полей, удаления или переименования полей и выполнения других подобных операций;

      • nest — фильтр, который используется для вложения полей журнальных записей в другие поля.

    1. /etc/fluent-bit/pipeline-outputs.yaml — файл, в котором указываются конечные точки, куда должны быть отправлены обработанные данные после прохождения через фильтры.

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

      ---
      pipeline:
          outputs:
            - name: kafka
              match: '*'
              brokers: 10.31.1.9:9092
              topics: audit
              message_key_field: correlationId
              timestamp_key: timestamp
              timestamp_format: iso8601

      Где:

      • outputs — список выходных потоков данных;

        • name — тип выходного потока данных;

        • match — параметр, который определяет, какие данные отправляются в указанный выходной поток;

        • brokers — переменная, содержащая адреса брокеров Kafka, к которым подключается Fluent Bit для отправки данных;

        • topics — переменная, определяющая имя темы Kafka, в которую отправляются данные;

        • message_key_field —  поле в сообщении, которое используется в качестве ключа (key) для Kafka-сообщения;

        • timestamp_key — поле в сообщении, которое используется для временной метки (timestamp) Kafka-сообщения;

        • timestamp_format — формат временной метки сообщения.

    Запуск службы fluent-bit

    После установки и настройки модуля, запустите службу fluent-bit, выполнив команду:

    sudo systemctl start fluent-bit

    Для проверки статуса запуска службы используйте команду:

    sudo systemctl status fluent-bit

    В случае ошибок проверьте логи системы (см. раздел «Рекомендации по сбору и предоставлению информации о проблеме/ошибке» документа «Руководство по эксплуатации»).

    Установка модуля «Удаленный доступ»

    Установка модуля «Удаленный доступ» является опциональной и выполняется после установки модуля координации (SaltStack), бэкенда и фронтенда.

    Подготовка к установке

    На этапе подготовки к установке убедитесь, что:

    1. Для PostgreSQL:

      1. Создана техническая учетная запись пользователя.

      2. Техническому пользователю назначена схема, в которой будут созданы таблицы схемы Guacamole.

      3. Техническому пользователю выданы права на выполнение DDL-операций.

    2. Настроен DNS.

    3. Настроена служба каталогов.

    4. Создана техническая учетная запись пользователя службы каталогов.

    5. (Опционально) сгенерированы SSL-сертификаты и закрытый ключ.

    Схема развертывания

    На Рис. 1 представлена схема развертывания продукта.

    deploy ira
    Рис. 2. Схема развертывания

    Установка и конфигурирование

    Чтобы установить модуль, выполните следующие шаги в заданной последовательности:

    Скачивание и распаковка архива с компонентами модуля

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

    1. Скачайте архив с deb-пакетами требуемой версии и соответствующие файлы контрольных сумм из предоставленного хранилища любым доступным способом.

    2. (Опционально) убедитесь в целостности архива, сравнив его контрольные суммы с контрольными суммами в соответствующих файлах.

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

      shasum -a 512 -c inno-lcm-all-1.8.0.tar.gz inno-lcm-all-1.8.0.tar.gz.sha512
    3. Перенесите скачанный архив на машину, на которой будут запускаться компоненты, выполнив команду scp (secure copy):

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

      scp inno-lcm-all-1.8.0.tar.gz 10.6.32.218
    4. Создайте временный каталог для распаковки и распакуйте архив.

      Пример команд для создания каталога и распаковки архива:

      mkdir lcm-all
      tar xvf inno-lcm-all-1.8.0.tar.gz -C lcm-all

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

      packages/inno-ira-guacamole-server_1.1.0_amd64.deb
      packages/inno-ira-guacamole-client_1.1.0_amd64.deb
      packages/inno-ira-guacamole-schema_1.0.0_amd64.deb
      packages/inno-ira-tigervnc_1.1.0_amd64.deb
      packages/inno-ira-openssh_1.1.0_amd64.deb
      packages/inno-ira-xrdp_1.1.0_amd64.deb
    Установка и конфигурирование компонента inno-ira-guacamole-server

    Установка выполняется на сервере шлюза удаленного доступа.

    Шаги выполнения:

    1. Установите зависимый пакет libinnovncserver компонента inno-ira-guacamole-server, выполнив команду:

      sudo apt install ./libinnovncserver_1.1.0_amd64.deb
    2. Установите зависимый пакет libinnofreerdp компонента inno-ira-guacamole-server, выполнив команду:

      sudo apt install ./libinnofreerdp_1.1.0_amd64.deb
    3. Установите пакет inno-ira-guacamole-server, выполнив команду:

      sudo apt install ./inno-ira-guacamole-server_1.1.0_amd64.deb

      После успешной установки будет создана и запущена systemd-служба guacd.

    1. Создайте конфигурационный файл для сервера Guacamole, выполнив команду:

      touch /etc/guacamole/guacd.conf
    2. В файле /etc/guacamole/guacd.conf задайте значения параметров:

      Наименование Описание Значение по умолчанию Обязательный параметр

      Секция настройки сервера ([server])

      bind_host

      Хост компонента guacd

      localhost

      Да

      bind_port

      Порт компонента guacd

      4822

      Да

      Секция настройки daemon-сервера ([daemon])

      log_level

      Уровень логирования

      info

      Нет

      Секция настройки SSL-соединения ([ssl])

      server_certificate

      Путь до SSL-сертификата

      Нет

      server_key

      Путь до ключа SSL-сертификата

      Нет

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

      [server]
      bind_host = ira-server.domain.local
      bind_port = 4822
      
      [daemon]
      log_level = debug
      
      [ssl]
      server_certificate = /ssl/domain.pem
      server_key = /ssl/domain.key
    3. Перезапустите systemd-службу guacd, выполнив команду:

      sudo systemctl restart guacd

    Для проверки статуса запуска службы используйте команду:

    sudo systemctl status guacd

    В случае успешного запуска система вернет ответ, где в поле Active будет указано значение active (running):

    systemctl status guacd
    ● guacd.service - Guacamole Server
       Loaded: loaded (/usr/local/lib/systemd/system/guacd.service; disabled; vendor preset: enabled)
       Active: active (running) since Thu 2024-05-30 09:00:29 MSK; 1s ago
         Docs: man:guacd(8)
     Main PID: 19060 (guacd)
        Tasks: 1 (limit: 4651)
       Memory: 10.1M
          CPU: 15ms
       CGroup: /system.slice/guacd.service
               └─19060 /usr/local/sbin/guacd -f
    
    мая 30 09:00:29 ira-server systemd[1]: Started Guacamole Server.
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Guacamole proxy daemon (guacd) version 1.5.4 started
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Successfully bound AF_INET socket to host 127.0.0.1, port 4822
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Communication will require SSL/TLS.
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Using PEM keyfile /ssl/domain.key
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Using certificate file /ssl/domain.pem
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Listening on host 127.0.0.1, port 4822

    При неуспешном запуске поле Active будет содержать иное значение. В этом случае проверьте логи системы (см. раздел «Рекомендации по сбору и предоставлению информации о проблеме/ошибке» документа «Руководство по эксплуатации»).

    Установка и конфигурирование компонента inno-ira-guacamole-client

    Установка выполняется на сервере шлюза удаленного доступа.

    Шаги выполнения:

    1. Установите пакет tomcat, выполнив команду:

      sudo apt install tomcat
    2. Установите пакет inno-ira-guacamole-client, выполнив команду:

      sudo apt install ./inno-ira-guacamole-client_1.1.0_amd64.deb
    3. Создайте каталог для клиента Guacamole, выполнив команду:

      mkdir -p /etc/guacamole/
    4. Создайте конфигурационный файл для клиента Guacamole, выполнив команду:

      touch /etc/guacamole/guacamole.properties
    5. В файле guacamole.properties задайте значения параметров:

      Наименование Описание Значение по умолчанию Обязательный параметр

      Параметры сервера

      guacd-hostname

      Имя хоста guacd-сервера

      localhost

      Нет

      guacd-port

      Порт guacd-сервера

      4822

      Нет

      guacd-ssl

      Использование SSL

      false

      Нет

      Параметры подключения к БД PostgreSQL

      postgresql-hostname

      Имя хоста БД PostgreSQL

      Да

      postgresql-port

      Порт БД PostgreSQL

      5432

      Нет

      postgresql-database

      Имя БД PostgreSQL

      Да

      postgresql-username

      Имя пользователя БД PostgreSQL

      Да

      postgresql-password

      Пароль пользователя БД PostgreSQL

      Да

      Параметры подключения к БД PostgreSQL с использованием SSL

      postgresql-ssl-cert-file

      Файл, содержащий SSL-сертификат клиента, который используется при установке соединения с сервером Postgres в формате PEM

      postgresql-ssl-key-file

      Файл, содержащий закрытый ключ клиента

      postgresql-ssl-root-cert-file

      Файл, содержащий корневой и промежуточный сертификаты

      postgresql-ssl-key-password

      Пароль, который будет использоваться для доступа к файлу закрытого ключа

      postgresql-default-statement-timeout

      Время ожидания ответа от БД в секундах

      postgresql-socket-timeout

      Время ожидания выполнения операций чтения сокета

      postgresql-batch-size

      Количество объектов, которые можно получить из базы данных за один запрос

      Параметры LDAP

      ldap-hostname

      Имя хоста LDAP-сервера

      Да

      ldap-port

      Имя порта LDAP-сервера

      389 или 636 (в зависимости от значения параметра ldap-encryption-method)

      Нет

      ldap-encryption-method

      Механизм шифрования LDAP-сервера. Возможные значения:

      • ssl — для взаимодействия с LDAP через SSL/TLS;

      • starttls — для STARTTLS;

      • none — не использовать шифрование

      none

      ldap-user-base-dn

      Базовый DN для всех пользователя Guacamole

      Да

      ldap-group-base-dn

      Базовый DN для все пользовательских групп

      Да

      ldap-username-attribute

      Атрибут, который содержит имя пользователя во всех объектах пользователей Guacamole в каталоге LDAP

      Да (sAMAccountName)

      ldap-group-name-attribute

      Атрибут, определяющий уникальные имена групп пользователей в каталоге LDAP

      Да (sAMAccountName)

      ldap-member-attribute-type

      Атрибут, указывающий тип атрибута (заданного в парамтере ldap-member-attribute), который определяет членство пользователя в группе

      Да (dn)

      ldap-member-attribute

      Атрибут, содержащий участников всех групповых объектов в каталоге LDAP

      Да (member)

      ldap-group-search-filter

      Фильтр, который определяет условия поиска для получения всех записей группы из LDAP

      (objectClass=*)

      Да ((objectClass=group))

      ldap-user-search-filter

      Фильтр, который определяет условия поиска для получения всех записей пользователя из LDAP

      Например, чтобы только члены группы CN=RCUsers,CN=Users,DC=windomain1,DC=com имели доступ к УД, задайте значение вида: (&(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=RCUsers,CN=Users,DC=windomain1,DC=com))

      (objectClass=*)

      Да

      ldap-search-bind-dn

      DN пользователя для подключения к LDAP-серверу в формате: CN=RCUser,CN=Users,DC=windomain1,DC=com

      Да

      ldap-search-bind-password

      Пароль пользователя для подключения к LDAP-серверу

      Да

      Аутентификация

      ignore-certs-in-rdp-connections

      Параметр позволяет принудительно отключить (значение true) проверку сертификата сервера при установке соединения по протоколу RDP.

      Если параметр не задан в файле, система будет считать, что установлено значение false

      true

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

      # guacd properties
      guacd-hostname: localhost
      guacd-port: 4822
      
      # PostgreSQL properties
      postgresql-hostname: localhost
      postgresql-database: guacamole_db
      postgresql-username: guacamole_db_user
      postgresql-password: password
      
      # LDAP properties
      ## Common
      ldap-hostname:          ira-server.domain.local
      ldap-encryption-method: ssl
      
      # Base DN
      ldap-user-base-dn:  DC=domain,DC=local
      ldap-group-base-dn: DC=domain,DC=local
      
      # Attributes
      ldap-username-attribute:    sAMAccountName
      ldap-group-name-attribute:  sAMAccountName
      
      ldap-member-attribute-type: dn
      ldap-member-attribute:      member
      
      # Search
      ldap-user-search-filter: (&(objectClass=person)(memberOf:1.2.840.113556.1.4.1941:=CN=arm_admins,CN=Users,DC=domain,DC=local))
      ldap-group-search-filter: (objectClass=group)
      ldap-search-bind-dn:       CN=Administrator,CN=Users,DC=domain,DC=local
      ldap-search-bind-password: Password123
      
      # Authentication
      ignore-certs-in-rdp-connections: true
    6. (Опционально) для настройки шифрования в файле /opt/tomcat/conf/server.xml выполните настройки секций Connector.

      Пример:

      <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"/>
      <Connector port="8083" protocol="org.apache.coyote.http11.Http11AprProtocol"
                 maxThreads="150" SSLEnabled="true" >
          <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
          <SSLHostConfig>
              <Certificate certificateKeyFile="<ssl_certificate_key>"
                           certificateFile="<ssl_certificate>"
                           type="RSA" />
          </SSLHostConfig>
      </Connector>

      Где:

      • ssl_certificate_key — определяет путь к файлу приватного ключа SSL-сертификата;

      • ssl_certificate — указывает SSL-сертификат для обеспечения безопасного соединения.

    7. Перезапустите сервер Tomcat, выполнив команду:

      sudo systemctl restart tomcat
    Установка и конфигурирование компонента inno-ira-guacamole-schema

    Установка выполняется на сервере, с которого схема Guacamole будет устанавливаться в БД PostgreSQL. На этом сервере должен быть установлен клиент psql.

    Шаги выполнения:

    1. Установите пакет inno-ira-guacamole-schema, выполнив команду:

      sudo apt install ./inno-ira-guacamole-schema_1.0.0_amd64.deb
    2. Установите схему Guacamole, выполнив команду:

      cat /opt/irc/guacamole-schema/schema/*.sql | psql --host <guacamole_database_host>
      --port <guacamole_database_port> -dbname <guacamole_database_name>
      --username <guacamole_database_user> --password -f -

      Где в параметрах необходимо указать технического пользователя и БД, созданных на этапе подготовки к установке:

      • <guacamole_database_host> — имя хоста БД;

      • <guacamole_database_port> — порт БД;

      • <guacamole_database_name> — имя БД;

      • <guacamole_database_user> — имя пользователя БД.

        При выполнении команды запрашивается пароль пользователя БД.

    3. Введите пароль пользователя БД.

      Будет создана схема Guacamole и пользователь guacadmin c паролем guacadmin.

      При первом запуске приложения Guacamole пароль пользователя guacadmin должен быть изменен администратором.
    Установка на агенте (minion)

    Для настройки удаленного доступа на агенте (minion) по протоколам VNC, RDP, SSH, задайте конфигурацию соответствующей формулы:

    • tigervnc-formula — см. описание в разделе «Формула tigervnc-formula» документа «Руководство по эксплуатации»;

    • xrdp-formula — см. описание в разделе «Формула xrdp-formula» документа «Руководство по эксплуатации»;

    • openssh-formula — см. описание в разделе «Формула openssh-formula» документа «Руководство по эксплуатации».

    Настройка журналирования и аудита

    Компоненты модуля «Удаленный доступ» осуществляют запись событий в два приемника:

    • журнал аудита — события, важные с точки зрения безопасности, например, аутентификация и авторизация пользователей, доступ к защищенным ресурсам (см. документ «Руководство по эксплуатации» раздел «Аудит»);

    • технический журнал — события, содержащие отладочную информацию полезную при анализе работы программы (см. документ «Руководство по эксплуатации» раздел «Журналирование»).

    Для сбора и передачи системных журналов используется служба syslog-ng (System Logging Daemon — Next Generation).

    Файлы логов аудита и журналирования создаются автоматически при установке модуля и хранятся на устройствах, на которых они были сгенерированы, в каталогах:

    Компонент Аудит Журналирование

    Служба доступа по VNC

    /var/log/inno-osmax/audit/tigervnc.log

    /var/log/inno-osmax/tigervnc.log

    WEB-клиент шлюза удаленного доступа

    /var/log/inno-osmax/audit/guacamole_client.log

    /var/log/inno-osmax/guacamole_client.log

    Сервер шлюза удаленного доступа

    /var/log/inno-osmax/audit/guacamole_server.log

    /var/log/inno-osmax/guacamole_server.log

    Служба доступа по SSH

    /var/log/inno-osmax/audit/openssh.log

    /var/log/inno-osmax/openssh.log

    Служба доступа по RDP

    /var/log/inno-osmax/audit/xrdp.log

    /var/log/inno-osmax/xrdp.log

    Настройка фильтрации syslog_ng

    Конфигурационные файлы модуля «Удаленный доступ» расположены в каталоге /usr/share/syslog-ng/include/scl/irc, который включает файл, содержащий общие настройки, и файлы компонентов модуля:

    • irc.conf — общие настройки, содержащий инструкцию (template) с описанием формата сообщения;

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

      template t_irc{
          template("<${PRI}> ${ISODATE} ${HOST} ${PROGRAM} ${PID} ${MESSAGE}\n");
      };
    • irc_guacamole_client.conf — конфигурационный файл WEB-клиента шлюза удаленного доступа;

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

      source s_irc_net {
       tcp(ip(127.0.0.1) port(514));
      };
      
      rewrite r_rewrite_hostname{set("-", value("HOST"));};
      
      destination d_guacamole_clientlog
      {
        file(
              "/var/log/inno-osmax/guacamole_client.log"
              template(t_irc)
              frac-digits(3)
              owner("osmax")
              group("osmax")
              perm(0640)
            );
      };
      
      filter f_guacamole_clientlog
      {
        program(guacamole_client) and message("IRC:") and not facility(local7);
      };
      
      log
      {
        source(s_irc_net);
        filter(f_guacamole_clientlog);
        rewrite(r_rewrite_hostname);
        destination(d_guacamole_clientlog);
        flags(final);
      };
      
      destination d_guacamole_clientaudit
      {
        file(
              "/var/log/inno-osmax/audit/guacamole_client.log"
              template(t_irc)
              frac-digits(3)
              owner("osmax")
              group("osmax")
              perm(0640)
            );
      };
      
      filter f_guacamole_clientaudit
      {
        program(guacamole_client) and facility(local7) and message("IRC:");
      };
      
      log
      {
        source(s_irc_net);
        filter(f_guacamole_clientaudit);
        rewrite(r_rewrite_hostname);
        destination(d_guacamole_clientaudit);
        flags(final);
      };
    • irc_guacamole_server.conf — конфигурационный файл сервера шлюза удаленного доступа;

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

      destination d_guaclog
      {
          file(
                  "/var/log/inno-osmax/guacamole_server.log"
                  template(t_irc)
                  frac-digits(3)
                  owner("osmax")
                  group("osmax")
                  perm(0640)
              );
      };
      
      filter f_guaclog
      {
              program(guacd) and message("IRC:") and not facility(local7);
      };
      
      log
      {
              source(s_src);
              filter(f_guaclog);
              destination(d_guaclog);
              flags(final);
      };
      
      destination d_guacaudit
      {
              file(
                      "/var/log/inno-osmax/audit/guacamole_server.log"
                      template(t_irc)
                      frac-digits(3)
                      owner("osmax")
                      group("osmax")
                      perm(0640)
                  );
      };
      
      filter f_guacaudit
      {
              program(guacd) and message("IRC:") and facility(local7);
      };
      
      log
      {
              source(s_src);
              filter(f_guacaudit);
              destination(d_guacaudit);
              flags(final);
      };
    • irc_tigervnc.conf — конфигурационный файл службы доступа по VNC;

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

      destination d_tigervnclog
      {
          file(
                  "/var/log/inno-osmax/tigervnc.log"
                  template(t_irc)
                  frac-digits(3)
                  perm(0640)
              );
      };
      
      filter f_tigervnclog
      {
          program(x0vncserver) and message("IRC:") and not facility(local7);
      };
      
      log
      {
          source(s_src);
          filter(f_tigervnclog);
          destination(d_tigervnclog);
          flags(final);
      };
      
      destination d_tigervncaudit
      {
          file(
                  "/var/log/inno-osmax/audit/tigervnc.log"
                  template(t_irc)
                  frac-digits(3)
                  perm(0640)
              );
      };
      
      filter f_tigervncaudit
      {
          program(x0vncserver) and message("IRC:") and facility(local7);
      };
      
      log
      {
          source(s_src);
          filter(f_tigervncaudit);
          destination(d_tigervncaudit);
          flags(final);
      };
    • irc_openssh.conf — конфигурационный файл службы доступа по SSH;

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

      destination d_opensshlog
      {
          file("/var/log/inno-osmax/openssh.log"
          template(t_irc)
          frac-digits(3));
      };
      
      filter f_opensshlog
      {
          program(openssh) and match("IRC:") and not facility(local7);
      };
      
      log
      {
          source(s_src);
          filter(f_opensshlog);
          destination(d_opensshlog);
          flags(final);
      };
      
      destination d_opensshaudit
      {
          file("/var/log/inno-osmax/audit/openssh.log"
          template(t_irc)
          frac-digits(3));
      };
      
      filter f_opensshaudit
      {
          program(openssh) and match("IRC:") and facility(local7);
      };
      
      log
      {
          source(s_src);
          filter(f_opensshaudit);
          destination(d_opensshaudit);
          flags(final);
      };
    • irc_xrdp.conf — конфигурационный файл службы доступа по RDP;

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

      destination d_xrdplog
      {
          file(
              "/var/log/inno-osmax/xrdp.log"
              template(t_irc)
              frac-digits(3)
          );
      };
      
      filter f_xrdplog
      {
          program(xrdp) and not (program(xrdp-sesman)) and match("IRC:") and not facility(local7);
      };
      
      log
      {
          source(s_src);
          filter(f_xrdplog);
          destination(d_xrdplog);
          flags(final);
      };
      
      destination d_xrdpaudit
      {
          file(
              "/var/log/inno-osmax/audit/xrdp.log"
              template(t_irc)
              frac-digits(3));
          };
      
      filter f_xrdpaudit {
          program(xrdp) and not (program(xrdp-sesman)) and match("IRC:") and facility(local7);
      };
      
      log
      {
          source(s_src);
          filter(f_xrdpaudit);
          destination(d_xrdpaudit);
          flags(final);
      };
    • irc_xrdp_sesman.conf — конфигурационный файл компонента xrdp-sesman.

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

      destination d_xrdp_sesman_log
      {
          file(
              "/var/log/inno-osmax/xrdp-sesman.log"
              template(t_irc)
              frac-digits(3)
          );
      };
      
      filter f_xrdp_sesman_log
      {
          program(xrdp-sesman) and match("IRC:") and not facility(local7);
      };
      
      log
      {
          source(s_src);
          filter(f_xrdp_sesman_log);
          destination(d_xrdp_sesman_log);
          flags(final);
      };
      
      destination d_xrdp_sesman_audit
      {
          file(
              "/var/log/inno-osmax/audit/xrdp-sesman.log"
              template(t_irc)
              frac-digits(3));
          };
      
      filter f_xrdp_sesman_audit {
          program(xrdp-sesman) and match("IRC:") and facility(local7);
      };
      
      log
      {
          source(s_src);
          filter(f_xrdp_sesman_audit);
          destination(d_xrdp_sesman_audit);
          flags(final);
      };
    Настройка ротации и архивирования

    Для настройки ротации и архивирования используется служба logrotate, которая обеспечивает автоматическую ротацию, сжатие, удаление и отправку лог-файлов по почте. Обычно служба logrotate запускается как ежедневное задание cron. В зависимости от настроек каждый лог-файл может обрабатываться ежедневно, еженедельно, ежемесячно или при достижении определенного размера.

    Настройки задаются в конфигурационных файлах, которые создаются автоматически при установке модуля в каталоге /etc/logrotate.d/ и включают параметры:

    • /app/inno-osmax/logs/<компонент>/<имя лог-файла> — путь до лог-файла;

    • rotate 36 — лог-файл проходит 36 регулярных ротаций перед удалением;

    • maxsize=10M — максимальный размера файла: 10MB;

    • copytruncate — удаление записей из оперативного файла выполняется после создания копии лог-файла;

    • compress — выполнение сжатия лог-файла после ротации;

    • monthly — период ротации лог-файла (один раз в месяц);

    • missingok — если лог-файл отсутствует, выполняется переход к следующему файлу без вывода сообщения об ошибке;

    • notifempty — если лог-файл пустой, ротация не выполняется.

    Примеры:

    • конфигурационные файлы шлюза удаленный доступ:

      • /etc/logrotate.d/irc.conf;

        /var/log/inno-osmax/audit/guacamole_server.log
        /var/log/inno-osmax/guacamole_server.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }
      • /etc/logrotate.d/irc_guacamole_client.conf;

        /var/log/inno-osmax/audit/guacamole_client.log
        /var/log/inno-osmax/guacamole_client.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }
    • конфигурационные файлы устройств:

      • /etc/logrotate.d/irc.conf;

        /var/log/inno-osmax/audit/tigervnc.log
        /var/log/inno-osmax/tigervnc.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }
      • /etc/logrotate.d/irc_openssh.conf;

        /var/log/inno-osmax/audit/openssh.log
        /var/log/inno-osmax/openssh.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }
      • /etc/logrotate.d/irc_xrdp.conf;

        /var/log/inno-osmax/audit/xrdp.log
        /var/log/inno-osmax/xrdp.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }
      • /etc/logrotate.d/irc_xrdp_sesman.conf.

        /var/log/inno-osmax/audit/xrdp-sesman.log
        /var/log/inno-osmax/xrdp-sesman.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }

    Установка продукта на РЕД ОС

    В разделе приводится инструкция по установке продукта на РЕД ОС версии 7.3.

    Установка модуля координации (SaltStack)

    Чтобы избежать ошибок в работе, для текущей версии продукта рекомендуется использовать SaltStack версии 3006.4.

    Чтобы установить модуль координации (SaltStack), выполните следующие шаги:

    1. Скачайте и распакуйте архив с модулем координации (SaltStack) для последующей установки сервера управления (master).

    2. Установите пакеты с модулем координации SaltStack на сервере управления (master).

    3. Установите wheel-пакет для работы с Kafka Returner.

    4. Выполните настройку сервера управления (master).

    5. Выполните настройку Kafka returner.

    6. Обновите информацию о модуле исполнения для сбора истории пользовательских сессий на сервере управления (master).

    7. Запустите сервер управления (master).

    8. Запустите модуль salt-api.

    9. Скачайте и распакуйте архив с модулем координации (SaltStack) для последующей установки агентов (minions).

    10. Установите пакеты с модулем координации SaltStack на агентах (minions).

    11. Выполните настройку агентов (minions).

    12. Создайте пары открытых ключей (public key) для взаимодействия сервера управления (master) с агентами (minions).

    13. Запустите и проверьте работу systemd-службы для агентов (minions).

    Скачивание и распаковка архива с модулем координации (SaltStack) для последующей установки сервера управления (master)

    1. Скачайте архив с модулем координации (SaltStack) требуемой версии из предоставленного хранилища любым доступным способом.

    2. Распакуйте архив, выполнив команду:

      tar xvf <имя_архива>

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

      tar xvf salt_3006.4.tar.gz
    3. Перенесите пакеты salt, salt-master и salt-api на машину, на которой будет запускаться сервер управления (master), выполнив команду scp (secure copy).

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

      scp ~/Downloads/salt_3006.4/salt-3006.4-*.rpm \
      ~/Downloads/salt_3006.4/salt-master-*.rpm \
      ~/Downloads/salt_3006.4/salt-api-*.rpm \
      user@remote_host:/salt-lcm/
    4. Перенесите wheel-пакет для работы с Kafka Returner на машину, на которой будет запускаться сервер управления (master), выполнив команду scp (secure copy).

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

      scp ~/Downloads/salt_3006.4/confluent_kafka-*.whl user@remote_host:/salt-lcm/

    Установка пакетов с модулем координации SaltStack на сервере управления (master)

    Если вы предполагаете использовать несколько серверов управления (masters), выполните установку отдельно для каждого из них.

    Чтобы установить пакеты с модулем координации SaltStack на сервере управления (master), выполните следующие шаги:

    На сервере, который вы будете использовать в качестве сервера управления (master), установите следующие rpm-пакеты в указанном порядке:

    1. salt — пакет, содержащий библиотеки, необходимые для работы модуля координации (SaltStack).

    2. salt-master — пакет для установки сервера управления (master), который будет управлять всеми агентами (minions) в инфраструктуре.

    3. salt-api — пакет, предоставляющий REST API для модуля координации (SaltStack).

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

    sudo dnf install ./salt-lcm/salt-3006.4-0.x86_64.rpm
    sudo dnf install ./salt-lcm/salt-master-3006.4-0.x86_64.rpm
    sudo dnf install ./salt-lcm/salt-api-3006.4-0.x86_64.rpm

    Конфигурация сервера управления (master)

    На машине, на которой установлен сервер управления (master), задайте настройки его конфигурации, следуя инструкциям в разделах ниже.

    По умолчанию сервер управления (master) настраивается через главный файл конфигурации — /etc/salt/master.

    Также поддерживается создание файлов конфигураций в каталоге /etc/salt/master.d/, что позволяет группировать логически параметры конфигурации.

    Подробную информацию о настройке главного файла конфигурации сервера управления (master) см. в официальной документации.

    Создание пользователя, от имени которого будут запускаться процессы SaltStack

    Чтобы создать пользователя, от имени которого будут запускаться процессы SaltStack, создайте файл конфигурации сервера управления (master) /etc/salt/master.d/user.conf и задайте в нем значение параметра user.

    Пример:

    user: <my_user>
    Если параметр не задан, по умолчанию процессы SaltStack будут запускаться от имени пользователя root.
    Включение модуля salt-api

    Чтобы включить модуль salt-api для модуля координации (SaltStack), выполните шаги:

    1. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/salt-api.conf.

      Пример:

      rest_cherrypy:
        port: 8080
        debug: True
        disable_ssl: True

      Где:

      • rest_cherrypy — параметры управления конфигурацией встроенного веб-сервера Cherrypy, который использует salt-api:

        • port — укажите порт, который будет запущен salt-api (например, 8080);

        • debug — (опционально) включите (True) или отключите (False) режим отладки (debug mode) для salt-api;

        • disable_ssl — (опционально) если в первом шаге вы не установили SSL-сертификаты, задайте значение True.

    Включение модуля salt-api с использованием SSL-сертификатов

    Чтобы включить модуль salt-api для модуля координации (SaltStack) с использованием SSL-сертификатов, выполните шаги:

    1. Сгенерируйте SSL-сертификат и закрытый ключ для сервера управления (master). В качестве примера здесь и далее будет использоваться сертификат salt-api.crt и закрытый ключ salt-api.key.

    2. Скопируйте сертификат salt-api.crt и закрытый ключ salt-api.key в директорию /etc/pki/tls/certs/.

    3. В файле конфигурации сервера управления (master) /etc/salt/master.d/salt-api.conf задайте следующие настройки:

      rest_cherrypy:
        port: 8000
        host: 0.0.0.0
        ssl_crt: /etc/pki/tls/certs/salt-api.crt
        ssl_key: /etc/pki/tls/certs/salt-api.key

      где:

      • port — порт, на котором будет запущен веб-сервер;

      • host — IP-адрес, на котором будет открыт порт для подключения клиентов;

      • ssl_crt — путь до файла с SSL-сертификатом сервера управления (master);

      • ssl_key — путь до закрытого ключа от SSL-сертификата сервера управления (master).

    Настройка подключения к S3-совместимому хранилищу

    Чтобы использовать S3-совместимое хранилище в качестве пространства для хранения общих файлов конфигураций и файлов состояний, выполните шаги:

    1. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/fileserver_backend.conf и в параметре fileserver_backend укажите имя хранилища, которое вы будете использовать в качестве бэкенда для файлов.

      Пример:

      fileserver_backend:
        - s3fs
    1. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/s3.conf и задайте в нем настройки подключения к S3-совместимому хранилищу.

      Пример:

      s3.service_url: <s3_hostname>:<s3_port>
      s3.keyid: <ACCESS_KEY>
      s3.key: <SECRET_KEY>
      s3.buckets:
        - salt-bucket
      s3.path_style: True
      s3.location: <REGION>

      Где:

      • s3.service_url — URL-адрес и порт для обращения к S3-совместимому хранилищу;

      • s3.keyid — ключ доступа, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

      • s3.key — секретный ключ, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

      • s3.buckets — имя бакета (например, salt-bucket) для хранения файлов состояния и формул;

      • s3.path_style — стиль представления пути к объектам в S3-совместимом хранилище;

      • s3.location — регион, в котором расположено S3-совместимое хранилище.

        Подробное описание всех параметров приведено в официальной документации.
    2. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf и задайте в нем настройки подключения к S3-совместимому хранилищу для хранения в отдельном бакете данных Pillar.

      Пример:

      ext_pillar:
        - s3:
            service_url: <s3_hostname>:<s3_port>
            keyid: <ACCESS_KEY>
            key: <SECRET_KEY>
            bucket: pillar-bucket
            multiple_env: False
            environment: base
            prefix: ''
            verify_ssl: False
            s3_cache_expire: 30
            s3_sync_on_update: True
            path_style: True
            https_enable: False

      Где:

      • service_url — URL-адрес и порт для обращения к S3-совместимому хранилищу;

      • keyid — ключ доступа, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

      • key — секретный ключ, который обеспечивает авторизацию и доступ к S3-совместимому хранилищу;

      • bucket — имя бакета (например, pillar-bucket), которое будет использоваться для хранения данных Pillar;

      • multiple_env — параметр, который определяет, поддерживается ли использование нескольких окружений (environments) в хранилище Pillar;

      • environment — параметр, который указывает на основное окружение (base environment) для хранилища Pillar;

      • prefix — префикс для путей к данным в S3-хранилище; пустая строка означает отсутствие префикса;

      • verify_ssl — параметр, который указывает, следует ли проверять SSL-сертификаты при обращении к S3-хранилищу;

      • s3_cache_expire — время жизни кэша (в секундах) для данных, полученных из S3-хранилища;

      • s3_sync_on_update — параметр, который определяет, следует ли выполнять синхронизацию данных при обновлении данных Pillar;

      • path_style — стиль представления пути к объектам в S3-хранилище;

      • https_enable — параметр, который указывает, следует ли использовать HTTPS для обращения к S3-хранилищу.

        Подробное описание всех полей приведено в официальной документации.
    Настройка подключения к S3-совместимому хранилищу с использованием SSL-сертификатов

    Если вы подключаетесь к S3-совместимому хранилищу с использованием SSL-сертификатов, выполните настройки:

    1. В файле конфигурации сервера управления (master) /etc/salt/master.d/s3.conf задайте значения параметров:

      s3.https_enable: True
      s3.verify_ssl: False
      При выставлении значения False для параметра verify_ssl валидация сертификата S3-совместимого хранилища выполняться не будет.
    2. В файле конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf задайте значение параметра:

      ext_pillar:
       - s3:
          https_enable: True
          verify_ssl: False
      При выставлении значения False для параметра verify_ssl валидация сертификата S3-совместимого хранилища выполняться не будет.

    Если требуется валидация сертификатов S3-совместимого хранилища, выполните следующие действия, выбрав один из двух вариантов, описанных ниже:

    • вариант 1:

      1. Скопируйте файл СА-сертификатов на сервер управления (master).

      2. Определите расположение хранилища сертификатов на сервере управления (master):

        $ /opt/saltstack/salt/bin/python3
        Python 3.10.13 (main, Oct  4 2023, 21:54:22) [GCC 11.2.0] on linux
        Type "help", "copyright", "credits" or "license" for more information.
        >>> import certifi
        >>> certifi.where()
        '/opt/saltstack/salt/lib/python3.10/site-packages/certifi/cacert.pem'
      3. Добавьте сертификат в хранилище.

        Пример команды для добавления сертификата ca.crt:

        cat ca.crt | sudo tee -a /opt/saltstack/salt/lib/python3.10/site-packages/certifi/cacert.pem
      4. В файле конфигурации сервера управления (master) /etc/salt/master.d/s3.conf задайте значение параметра verify_ssl: True (аналогично параметру https_enable: True).

        Пример:

        s3.verify_ssl: True
        s3.https_enable: True
      5. В файле конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf задайте значение параметра verify_ssl: True (аналогично параметру https_enable: True) .

        Пример:

        ext_pillar:
        - s3:
            https_enable: True
            verify_ssl: True
    • вариант 2:

      1. Разместите файл СА-сертификатов, используемый в качестве Issuer в S3-совместимом хранилище, на сервере управления (master) по пути /etc/salt/pki/ca.crt.

      2. В файле конфигурации сервера управления (master) /etc/salt/master.d/s3.conf задайте значение параметра verify_ssl: /etc/salt/pki/ca.crt.

        Пример:

        s3.verify_ssl: /etc/salt/pki/ca.crt
        s3.https_enable: True
      3. В файле конфигурации сервера управления (master) /etc/salt/master.d/ext_pillar.conf задайте значение параметра verify_ssl: /etc/salt/pki/ca.crt.

        Пример:

        ext_pillar:
        - s3:
            https_enable: True
            verify_ssl: /etc/salt/pki/ca.crt
    Загрузка пользовательских формул в S3-совместимое хранилище
    Готовые формулы (подробнее см. раздел «Готовые формулы» документа «Руководство по эксплуатации») импортируются автоматически при установке продукта.

    Чтобы загрузить пользовательские формулы (см. раздел «Пользовательские формулы» документа «Руководство по эксплуатации») и формулы-шаблоны (см. раздел «Формулы-шаблоны» документа «Руководство по эксплуатации»), используйте API для импорта формулы в S3-совместимое хранилище importFormulas (см. раздел «Метод importFormulas» документа «Описание API»).

    Настройка интеграции с Apache Kafka
    Отправка событий с сервера управления (master) в Apache Kafka выполняется с помощью библиотеки librdkafka.

    Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/returner.conf.

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

    returner.kafka_custom.bootstrap:
      - "<kafka_host>:<kafka_port>"
    returner.kafka_custom.topic: 'salt-topic'
    returner.kafka_custom.security.protocol: ""
    returner.kafka_custom.ssl.cipher.suites: ""
    returner.kafka_custom.ssl.curves.list: ""
    returner.kafka_custom.ssl.sigalgs.list: ""
    returner.kafka_custom.ssl.key.location: ""
    returner.kafka_custom.ssl.key.password: ""
    returner.kafka_custom.ssl.key.pem: ""
    returner.kafka_custom.ssl.certificate.location: ""
    returner.kafka_custom.ssl.certificate.pem: ""
    returner.kafka_custom.ssl.ca.location: ""
    returner.kafka_custom.ssl.ca.pem: ""
    returner.kafka_custom.ssl.ca.certificate.stores: ""
    returner.kafka_custom.ssl.crl.location: ""
    returner.kafka_custom.ssl.keystore.location: ""
    returner.kafka_custom.ssl.keystore.password: ""
    returner.kafka_custom.ssl.providers: ""
    returner.kafka_custom.ssl.engine.id: ""
    returner.kafka_custom.enable.ssl.certificate.verification: ""
    returner.kafka_custom.ssl.endpoint.identification.algorithm: ""
    returner.kafka_custom.debug: "all"
    returner.kafka_custom.log_level: ""
    returner.kafka_custom.allow.auto.create.topics: "true"
    event_return: kafka_custom

    В таблицах ниже приводится описание параметров из файла.

    Обязательные параметры:

    Наименование Описание Пример значения

    returner.kafka_custom.bootstrap

    Список хостов с указанием портов, где запущен брокер сообщений Apache Kafka

    "192.168.1.101:9092"

    returner.kafka_custom.topic

    Топик Apache Kafka

    salt-topic

    event_return

    Выбор способа отправки событий возврата

    kafka_custom

    Опциональные параметры:

    Наименование Описание Пример значения

    returner.kafka_custom.security.protocol

    Протокол, который используется для соединения с Apache Kafka

    plaintext

    returner.kafka_custom.ssl.cipher.suites

    Набор шифров (именованная комбинация аутентификации, шифрование, MAC-адреса и алгоритмы обмена ключами), используемые для согласования параметров безопасности сетевого подключения по протоколу SSL. Подробнее см. SSL_CTX_set_cipher_list

    returner.kafka_custom.ssl.curves.list

    Поддерживаемые кривые (supported curves), стандартные/именованные или «явные» GF(2^k) или GF(p) для использования сервером, которые передаются в сообщении TLS ClientHello. Подробнее см. SSL_CTX_set1_curves_list

    returner.kafka_custom.ssl.sigalgs.list

    Поддерживаемые алгоритмы цифровой подписи для использования сервером, которые передаются в сообщении TLS ClientHello. Подробнее см. SSL_CTX_set1_sigalgs

    returner.kafka_custom.ssl.key.location

    Путь к закрытому ключу клиента (PEM), который используется для аутентификации

    returner.kafka_custom.ssl.key.password

    Пароль для закрытого ключа (для использования с ssl.key.location и set_ssl_cert())

    returner.kafka_custom.ssl.key.pem

    Строка закрытого ключа клиента (в PEM-формате), которая используется для аутентификации

    returner.kafka_custom.ssl.certificate.location

    Путь к публичному ключу клиента (в PEM-формате), который используется для аутентификации

    returner.kafka_custom.ssl.certificate.pem

    Строка публичного ключа клиента (в PEM-формате), которая используется для аутентификации

    returner.kafka_custom.ssl.ca.location

    Путь к файлу или каталогу сертификатов CA (Certificate Authority) для проверки ключа брокера

    returner.kafka_custom.ssl.ca.pem

    Строка сертификата CA (в PEM-формате) для проверки ключа брокера

    returner.kafka_custom.ssl.ca.certificate.stores

    Список хранилищ сертификатов Windows (через запятую), из которых можно загрузить сертификаты CA. Сертификаты будут загружены в том же порядке, в котором указаны хранилища

    returner.kafka_custom.ssl.crl.location

    Путь к CRL для валидации сертификата брокера

    returner.kafka_custom.ssl.keystore.location

    Путь к хранилищу ключей клиента (PKCS#12), которые используются для аутентификации

    returner.kafka_custom.ssl.keystore.password

    Пароль хранилища ключей клиента (PKCS#12)

    returner.kafka_custom.ssl.providers

    Список провайдеров (разделенный запятыми) OpenSSL 3.0.x

    returner.kafka_custom.ssl.engine.id

    Идентификатор OpenSSL

    returner.kafka_custom.enable.ssl.certificate.verification

    Включение проверки сертификата встроенного брокера OpenSSL (сервера). Эта проверка может быть расширена приложением путем реализации certificate_verify_cb

    returner.kafka_custom.ssl.endpoint.identification.algorithm

    Алгоритм идентификации endpoint для проверки имени хоста брокера с использованием сертификата брокера

    returner.kafka_custom.debug

    Список контекстов отладки (разделенный запятыми), которые необходимо включить

    returner.kafka_custom.log_level

    Уровень логирования

    returner.kafka_custom.allow.auto.create.topics

    Разрешение автоматического создания темы в брокере при подписке на несуществующие темы или назначения им тем.

    Для корректной работы данной конфигурации брокер должен быть настроен с параметром auto.create.topics.enable=true
    Настройка интеграции с Apache Kafka с использованием защищенного TLS-соединения

    Если вы настраиваете интеграцию с использованием защищенного TLS-соединения, в файле конфигурации сервера управления (master) /etc/salt/master.d/returner.conf укажите все настройки, приведенные ниже:

    returner.kafka_custom.bootstrap:
      - 10.31.0.170:9092
    returner.kafka_custom.topic: salt-topic
    returner.kafka_custom.security.protocol: "ssl"
    returner.kafka_custom.ssl.key.location: "/etc/<span data-markjs="true" class="terms-mark tooltipstered terms-term-selector">salt</span>/pki/salt_kafkaclient.key"
    returner.kafka_custom.ssl.key.password: "abcdefgh"
    returner.kafka_custom.ssl.certificate.location: "/etc/<span data-markjs="true" class="terms-mark tooltipstered terms-term-selector">salt</span>/pki/salt_kafkaclient.pem"
    returner.kafka_custom.ssl.ca.location: "/etc/<span data-markjs="true" class="terms-mark tooltipstered terms-term-selector">salt</span>/pki/salt_kafkaca.crt"
    returnet.kafka_custom.ssl.endpoint.identification.algorithm: "none"
    returner.kafka_custom.enable.ssl.certificate.verification: "false"
    returner.kafka_custom.allow.auto.create.topics: "true"
    returner.kafka_custom.debug: "all"
    event_return: kafka_custom
    В качестве инструкции по генерации сертификатов используйте документ "Using SSL with librdkafka".
    Настройка журналирования

    Для настройки журналирования сервера управления (master) cоздайте файл конфигурации /etc/salt/master.d/logging.conf и задайте в нем необходимые значения параметров, следуя примеру:

    log_level: warning
    log_file: /app/inno-osmax/logs/salt-master/master
    log_level_logfile: warning
    api_logfile: /app/inno-osmax/logs/salt-api/api
    key_logfile: /app/inno-osmax/logs/salt-key/key

    Где:

    • log_level — настройка уровня журналирования для сообщений, отправляемых на консоль; возможные значения:

      • all —  все сообщения будут записываться в лог-файл;

      • warning — сообщения, содержащие предупреждение о потенциальной проблеме или необычном состоянии, которое не является ошибкой, но требует внимания;

      • info — информационные сообщения о ходе работы модуля;

      • profile — профильная информация о производительности модуля координации (SaltStack);

      • debug — сообщения, содержащие отладочную информацию;

      • trace — сообщения, содержащие детальную отладочную информацию;

      • garbage — сообщения, содержащие более детальную (чем trace) отладочную информацию;

      • error — сообщения об ошибке, которая привела к некритическому сбою;

      • critical — сообщения об ошибке, которая привела к критическому сбою;

      • quiet — сообщения в лог-файл записываться не будут;

    • log_file — лог-файл; локальный путь к лог-файлу сервера управления (master);

    • log_level_logfile — уровень журналирования для сообщений, отправляемых в лог-файл;

      Возможные значения аналогичны значениям параметра log_level.
    • api_logfile — лог-файл; локальный путь к лог-файлу модуля salt-api;

    • key_logfile — лог-файл; локальный путь к лог-файлу модуля salt-key.

    Настройка ротации и архивирования

    Для настройки ротации и архивирования используется служба logrotate, которая обеспечивает автоматическую ротацию, сжатие, удаление и отправку лог-файлов по почте. Обычно служба logrotate запускается как ежедневное задание cron. В зависимости от настроек каждый лог-файл может обрабатываться ежедневно, еженедельно, ежемесячно или при достижении определенного размера.

    Чтобы задать необходимые настройки, создайте файл конфигурации /etc/logrotate.d/salt-common.

    Пример c минимальными настройками:

    /app/inno-osmax/logs/salt-master/master {
    daily
    missingok
    rotate 45
    compress
    notifempty
    }
    
    /app/inno-osmax/logs/salt-api/api {
    daily
    missingok
    rotate 45
    compress
    notifempty
    }
    
    /app/inno-osmax/logs/salt-key/key {
    daily
    missingok
    rotate 45
    compress
    notifempty
    }

    Где:

    • /app/inno-osmax/logs/<модуль SaltStack>/<имя лог-файла> — путь до лог-файла;

    • daily — период ротации лог-файла (ежедневно);

    • missingok — если лог-файл отсутствует, будет выполняться переход к следующему файлу без вывода сообщения об ошибке;

    • rotate 45 — лог-файл будет проходить 45 ежедневных ротаций, перед тем как будет удален;

    • compress — файл будет сжат после ротации;

    • notifempty — если лог-файл пустой, ротация выполняться не будет.

    Настройка режима мульти-мастер с автоматическим переключением (failover)
    Настройки, описанные ниже, являются опциональными и выполняются только при использовании режима мульти-мастер с автоматическим переключением (failover).
    1. Cоздайте файл конфигурации сервера управления (master) /etc/salt/master.d/master_sign_pubkey.conf.

    2. В конфигурационном файле сервера управления (master) включите настройку подписи всех открытых ключей, установив значение параметра:

      master_sign_pubkey: True
    3. Перезапустите службу salt-master. После перезапуска сервер управления (master) автоматически создаст новую пару ключей и будет использовать ее для создания подписи открытых ключей, прикрепленной к ответу аутентификации:

      master_sign.pem
      master_sign.pub
    4. (Опционально) задайте имя для пары ключей подписи, установив значение параметра:

      master_sign_key_name: <name_without_suffix>
    Настройка параметров оптимизации производительности работы сервера управления (master)

    При описанной выше настройке сервер управления (master) вычисляет подпись для каждого запроса аутентификации, что требует большого количества ресурсов процессора.

    Чтобы избежать высокой нагрузки, сервер управления (master) может использовать созданную заранее подпись публичного ключа. Такая подпись сохраняется в виде строки в кодировке Base64, которую сервер управления (master) читает один раз при запуске и прикрепляет только эту строку к ответам аутентификации.

    Включение этого параметра также дает пользователям возможность иметь пару ключей подписи в системе, отличной от текущего сервера управления (master), и создавать там подпись с открытыми ключами. Вероятно, в системе с более строгими правилами брандмауэра, без доступа в Интернет и с меньшим количеством пользователей.

    Чтобы создать такую подпись, выполните команду:

    salt-key --gen-signature

    В директории сервера управления (master) pki будет создан файл с подписью по умолчанию:

    /etc/salt/pki/master/master_pubkey_signature

    Это простой текстовый файл с двоичной подписью, преобразованной в base64. Если пара подписи еще не существует, пара подписи и файл подписи будут автоматически созданы за один вызов:

    salt-key --gen-signature --auto-create

    Чтобы сервер управления (master) использовал пересозданную подпись, установите значение параметра:

    master_use_pubkey_signature: True

    Для этого в каталоге сервера управления (master) pki должен присутствовать файл master_pubkey_signature с правильной подписью. Если у файла будет другое имя, задайте его, указав значение параметра:

    master_pubkey_signature: <filename>

    При наличии большого количества серверов управления (masters) и открытых ключей (по умолчанию и для подписи) рекомендуется использовать имя хоста salt-masters для имен файлов подписи. Подписи легко перепутать, поскольку они не несут никакой информации о ключе, из которого была создана подпись.

    Подробное описание включения режима мульти-мастер с автоматическим переключением (failover) см. в документе «Руководство по эксплуатации» в разделе «Настройка режима мульти-мастер с автоматическим переключением (failover)».

    Настройка Kafka returner

    Загрузка Kafka returner в S3-совместимое хранилище

    В S3-совместимое хранилище поместите файл kafka_return_custom.py в бакет salt-bucket по пути /base/_returners.

    Пример результата:

    kafka returner path
    Обновление информации о Kafka returner на сервере управления (master)

    Чтобы убедиться в корректности установки и готовности Kafka returner к использованию, обновите информацию о нем на сервере управления (master), выполнив команду:

    sudo salt-run saltutil.sync_returners

    Обновление информации о модуле исполнения для сбора истории пользовательских сессий на сервере управления (master)

    Модуль исполнения для сбора истории пользовательских сессий запускается автоматически при установке бэкенда продукта и обеспечивает запись данных в S3-бакет salt-bucket в файл user_sessions.py по пути base/_modules/.

    Для корректной работы модуля обновите информацию о нем на сервере управления (master), выполнив команду:

    salt '*' saltutil.sync_modules --async

    Запуск сервера управления (master)

    1. Запустите сервер управления (master), выполнив команду:

      sudo systemctl start salt-master
    2. Проверьте статус сервера управления (master), выполнив команду:

      sudo systemctl status salt-master

    Запуск модуля salt-api

    1. Запустите модуль salt-api, выполнив команду:

      sudo systemctl start salt-api
    2. Проверьте статус модуля salt-api, выполнив команду:

      sudo systemctl status salt-api

    Скачивание и распаковка архива с модулем координации (SaltStack) для последующей установки агентов (minions)

    1. Скачайте архив с модулем координации (SaltStack) требуемой версии из предоставленного хранилища любым доступным способом.

    2. Распакуйте архив, выполнив команду:

      tar xvf <имя_архива>

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

      tar xvf salt_3006.4.tar.gz
    3. Перенесите rpm-пакеты salt и salt-minion на машину, которая будет использоваться в качестве агента (minion), выполнив команду scp (secure copy).

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

      scp ~/Downloads/salt_3006.4/salt-3006.4-*.rpm \
      ~/Downloads/salt-minion-3006.4-0.x86_64.rpm \
      user@remote_host:/salt-lcm/

    Установка пакетов с модулем координации SaltStack на агентах (minions)

    Чтобы установить пакеты с модулем координации SaltStack на агентах (minions), выполните следующие шаги:

    Установите rpm-пакеты в указанном порядке на устройствах, которые будут использоваться в качестве агентов (minions):

    1. salt — пакет, содержащий библиотеки, необходимые для работы SaltStack.

    2. salt-minion — пакет для установки агентов (minions) на удаленных устройствах.

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

    sudo dnf install ./salt-lcm/salt-3006.4-0.x86_64.rpm
    sudo dnf install ./salt-lcm/salt-minion-3006.4-0.x86_64.rpm

    Конфигурация агента (minion)

    На машине, на которой установлен агент (minion), задайте настройки его конфигурации, следуя инструкции ниже.

    По умолчанию агент (minion) настраивается через главный файл конфигурации — /etc/salt/minion.

    Также поддерживается создание файлов конфигураций в каталоге /etc/salt/minion.d/, что позволяет группировать логически параметры конфигурации.

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

    1. Cоздайте файл конфигурации агента (minion) /etc/salt/minion.d/master.conf.

    2. Задайте параметры для подключения к серверу управления (master).

    3. Задайте интервал в минутах, через который агент будет отправлять ping-запрос на сервер управления (master). Рекомендуемое значение — 10 минут.

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

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

      • чем меньше значение параметра, тем больший объем данных будет передаваться в единицу времени, увеличивая нагрузку на сеть;

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

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

      master:
        - <адрес сервера управления (master)>
      ping_interval: 10
    4. (Опционально) для организации подключения в отказоустойчивом режиме (HA) — в режиме «мульти-мастер» (failover) внесите соответствующие настройки в файл /etc/salt/minion.d/master.conf. Ниже представлены минимальные настройки для работы с типом конфигурации failover:

      master:
        - <адрес 1-ого сервера управления (master)>
        - <адрес 2-ого сервера управления (master)>
        - ...
        - <адрес N-ого сервера управления (master)>
      
      master_type: failover
      master_alive_interval: 60
      master_failback: True
      master_failback_interval: 30
      random_master: true

      Где:

      • master_type — используемый способ подключения к серверам управления (master) (режим failover);

      • master_alive_interval — таймаут проверки серверов на предмет доступности, используемый для переключения между серверами;

      • master_failback — сценарий повторного подключения к серверам при их недоступности (значение True позволяет выполнить попытку подключения к серверам, которые были ранее недоступны);

      • master_failback_interval — таймаут проверки серверов при их повторной недоступности;

      • random_master — сценарий выбора сервера управления (master) из списка (значение True указывает, что будет выбираться случайный сервер из списка).

        Подробнее о настройке режима мульти-мастер с автоматическим переключением (failover) см. в документе «Руководство по эксплуатации» в разделе «Настройка режима мульти-мастер с автоматическим переключением (failover)».
    1. (Опционально) создайте файл конфигурации агента (minion) /etc/salt/minion.d/sudo_user.conf и задайте в нем пользователя, от имени которого будут запускаться процессы SaltStack.

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

      user: user
      sudo_user: root

      Где:

      • user — пользователь, от имени которого будут запускаться процессы SaltStack (значение по умолчанию: root);

      • sudo_user — пользователь, с правами которого будут выполняться удаленные команды SaltStack от имени активного пользователя (заданного в параметре user)

        Обычно для параметра sudo_user указывается значение root. В этом случае в параметре user не может быть указан пользователь root.

        Если вы используете параметр sudo_user, дополнительно выполните следующие настройки:

        1. Добавьте нового пользователя в файл sudoers и укажите, что от имени этого пользователя может запускаться агент (minion).

        2. Очистите кэш агента (minion).

        3. Укажите нового пользователя в качестве владельца каталога minion pki: sudo_user: root.

    Настройка журналирования

    Для настройки журналирования агента (minion) cоздайте файл конфигурации /etc/salt/minion.d/logging.conf и задайте в нем необходимые значения параметров, следуя примеру:

    log_level: info
    log_file: /app/inno-osmax/logs/salt-minion/minion
    log_level_logfile: info

    Где:

    • log_level — настройка уровня журналирования для сообщений, отправляемых на консоль; возможные значения:

      • all —  все сообщения будут записываться в лог-файл;

      • warning — сообщения, содержащие предупреждение о потенциальной проблеме или необычном состоянии, которое не является ошибкой, но требует внимания;

      • info — информационные сообщения о ходе работы модуля;

      • profile — профильная информация о производительности модуля координации (SaltStack);

      • debug — сообщения, содержащие отладочную информацию;

      • trace — сообщения, содержащие детальную отладочную информацию;

      • garbage — сообщения, содержащие более детальную (чем trace) отладочную информацию;

      • error — сообщения об ошибке, которая привела к некритическому сбою;

      • critical — сообщения об ошибке, которая привела к критическому сбою;

      • quiet — сообщения в лог-файл записываться не будут;

    • log_file — лог-файл; локальный путь к лог-файлу агента (minion);

    • log_level_logfile — уровень журналирования для сообщений, отправляемых в лог-файл.

      Возможные значения аналогичны значениям параметра log_level.
    Настройка ротации и архивирования

    Для настройки ротации и архивирования используется служба logrotate, которая обеспечивает автоматическую ротацию, сжатие, удаление и отправку лог-файлов по почте. Обычно служба logrotate запускается как ежедневное задание cron. В зависимости от настроек каждый лог-файл может обрабатываться ежедневно, еженедельно, ежемесячно или при достижении определенного размера.

    Чтобы задать необходимые настройки, создайте файл конфигурации /etc/logrotate.d/salt-common.

    Пример c минимальными настройками:

    /app/inno-osmax/logs/salt-minion/minion {
    daily
    missingok
    rotate 45
    compress
    notifempty
    }

    Где:

    • /app/inno-osmax/logs/<модуль SaltStack>/<имя лог-файла> — путь до лог-файла;

    • daily — период ротации лог-файла (ежедневно);

    • missingok — если лог-файл отсутствует, будет выполняться переход к следующему файлу без вывода сообщения об ошибке;

    • rotate 45 — лог-файл будет проходить 45 ежедневных ротаций, перед тем как будет удален;

    • compress — файл будет сжат после ротации;

    • notifempty — если лог-файл пустой, ротация выполняться не будет.

    Создание пар открытых ключей (public key) для взаимодействия сервера управления (master) с агентами (minions)

    Сервер управления (master) взаимодействует с агентами (minion) посредством открытого ключа шифрования и аутентификации. Чтобы агент (minion) смог принять команды от сервера управления (master), его ключ должен быть принят сервером управления (master).

    Для управления всеми ключами на сервере управления (master) используйте команду salt-key.

    Для просмотра всех ключей, которые находятся на сервере управления (master) используйте команду salt-key -L.

    Пример:

    # salt-key -L
    Accepted Keys:
    Denied Keys:
    Unaccepted Keys:
    minion01
    Rejected Keys:

    Где:

    • Accepted — принятые ключи; в этом состоянии агент (minion) может общаться с сервером управления (master);

    • Rejected — ключи, отклоненные с помощью команды salt-key; в этом состоянии агент (minion) не принимает команды с сервера управления (master);

    • Denied — ключи, автоматически отклоненные сервером управления (master); в этом состоянии агент (minion) не принимает команды с сервера управления (master);

    • Unaccepted — ключи, которые находятся в ожидании принятия.

    Чтобы принять все отложенные (Unaccepted) ключи, используйте команду salt-key -A.

    Пример:

    # salt-key -A
    The following keys are going to be accepted:
    Unaccepted Keys:
    minion01
    Proceed? [n/Y] y
    Key for minion minion01 accepted.

    Чтобы принять ключ только выбранного агента (minion), используйте эту же команду и в аргументе -a укажите имя хоста агента (minion).

    Пример:

    # salt-key -a minion01
    The following keys are going to be accepted:
    Unaccepted Keys:
    minion
    Proceed? [n/Y] y
    Key for minion minion01 accepted.

    Обмен командами и данными между сервером управления (master) и агентом (minion) возможен только после того, как будет произведен обмен ключами, и ключ агента будет принят (Accepted) сервером управления (master).

    Пример:

    # salt-key -L
    Accepted Keys:
    minion01
    Denied Keys:
    Unaccepted Keys:
    Rejected Keys:

    В тестовых целях допустимо использовать автоматический прием с подтверждением всех ключей от любых агентов (minions), исключающий необходимость ручного подтверждения каждого нового агента (minion). Для этого в файле конфигурации сервера управления (master) задайте параметр:

    auto_accept: true

    Запуск и проверка работы systemd-службы для агента (minion)

    1. Запустите systemd-службу salt-minion, выполнив команду:

      sudo systemctl start salt-minion
    2. Перезапустите systemd-службу salt-minion, выполнив команду:

      sudo systemctl restart salt-minion
    3. Проверьте статус службы salt-minion, выполнив команду:

      sudo systemctl status salt-minion

    Установка бэкенда и фронтенда продукта

    Чтобы установить бэкенд и фронтенд продукта, выполните шаги:

    1. Скачайте и распакуйте архив с основными модулями продукта.

    2. Установите и выполните настройку модулей бэкенда.

    3. Установите фронтенд и выполните настройку веб-сервера.

    Скачивание и распаковка архива с основными модулями продукта

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

    1. Скачайте архив с модулем координации (SaltStack) требуемой версии из предоставленного хранилища любым доступным способом.

    2. Распакуйте архив, выполнив команду:

      tar xvf <имя_архива>

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

      tar xvf inno-lcm-all-1.6.0.tar.gz
    3. Перенесите скачанный архив на машину, на которой будет запускаться inno-lcm, выполнив команду scp (secure copy).

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

      scp ~/Downloads/inno-lcm-*-1.6.0*.rpm  user@remote_host:/inno-lcm/

    Установка и конфигурация модулей бэкенда

    Установка бэкенда можете выполняться как на отдельном сервере, так и на сервере вместе с фронтендом продукта.

    Для установки бэкенда:

    1. Установите пакеты:

    2. Выполните конфигурацию модулей:

    Установка пакета inno-lcm-core

    Чтобы установить пакет inno-lcm-core, выполните команду:

    sudo dnf install ./<пакет>

    Пример:

    sudo dnf install /inno-lcm/inno-lcm-core-1.6.0~457514.a6ac910e-1.x86_64.rpm -y
    Проверка установки

    После успешной установки пакета:

    1. Создан конфигурационный файл с настройками по умолчанию — /opt/inno-lcm-core/application.properties (описание настроек см. в разделе «Конфигурация бэкенда»).

      В случае когда выполняется обновление продукта до более новой версии, файл application.properties остается неизменным, но дополнительно создается файл application.example.properties. Этот файл носит ознакомительный характер и используется в качестве примера для самостоятельного переопределения параметров в конфигурационном файле application.properties.
    2. Создана systemd-служба lcm.

      При установке пакета inno-lcm-core автоматически создается пользователь inno-osmax-core, от имени которого запускается systemd-служба lcm. При обновлении или удалении пакета пользователь удален не будет.

    Чтобы запустить systemd-службу lcm, выполните команду:

    sudo systemctl start <имя службы>

    Пример:

    sudo systemctl start lcm

    Для включения автозапуска systemd-службы lcm используйте команду:

    sudo systemctl enable lcm

    Для проверки статуса запуска службы используйте команду:

    sudo systemctl status lcm

    В случае успешного запуска система вернет ответ, где в поле Active будет указано значение active (running):

    systemctl status lcm
    ● lcm.service
       Loaded: loaded (/etc/systemd/system/lcm.service; enabled; vendor preset: enabled)
       Active: active (running) since Wed 2024-01-24 19:24:40 MSK; 22h ago
     Main PID: 7894 (inno-lcm-core)
        Tasks: 53 (limit: 19048)
       Memory: 926.0M
       CGroup: /system.slice/lcm.service
               └─7894 /opt/inno-lcm-core/bin/inno-lcm-core

    При неуспешном запуске поле Active будет содержать иное значение. В этом случае проверьте логи системы (см. раздел «Рекомендации по сбору и предоставлению информации о проблеме/ошибке» документа «Руководство по эксплуатации»).

    Конфигурация модуля inno-lcm-core

    Конфигурация бэкенда выполняется в файле application.properties, помещенном в каталог /opt/inno-lcm-core. Файл создается автоматически при установке rpm-пакета inno-lcm-core и содержит значения по умолчанию.

    Пример конфигурационного файла с настройками по умолчанию

    ## This is an example of `application.properties` file as main configuration file for lcm-core backend
    
    ###############################################################################
    # HTTP server properties section                                              #
    ###############################################################################
    
    ## Main application port
    quarkus.http.port=8081
    
    ## SSL configuration section.
    ## To enable serving requests via HTTPS uncomment the following parameters:
    #quarkus.http.insecure-requests=disabled
    #quarkus.http.ssl-port=8081
    #quarkus.http.ssl.certificate.key-store-file=/opt/inno-lcm-core/keystore.jks
    #quarkus.http.ssl.certificate.key-store-password=keystore@12345
    
    ###############################################################################
    # Authentication & Authorization section                                      #
    ###############################################################################
    
    ## Enable/disable authentication
    lcm.application.auth.disabled=false
    ## Enables kerberos authentication debug mode
    #quarkus.kerberos.debug=true
    ## There are 2 alternative options for the kerberos credentials [principal realm, name and password] defining:
    ## 1) via direct defining;
    ## 2) via keytab file path defining
    ##
    ## Direct kerberos credentials defining:
    quarkus.kerberos.service-principal-name=lcm_backend_svc
    quarkus.kerberos.service-principal-realm=my.domain.com
    quarkus.kerberos.service-principal-password=Password123
    ## Path to keytab:
    #quarkus.kerberos.keytab-path=/opt/inno-lcm-core/my_file.keytab
    
    ## Old deprecated authorization based on LDAP-groups only
    ## List of LDAP groups whose users are authorized in Admin Console
    #lcm.authorization.user-groups-white-list[0]=CN=testGroup,CN=Users,DC=inno,DC=test
    
    # New RBAC
    lcm.authorization.rbac.enabled=false
    # The following users will be mapped to the superuser role when the application starts
    #lcm.authorization.rbac.super-users[0]=alice@INNO.TEST
    #lcm.authorization.rbac.super-users[1]=bob@INNO.TEST
    
    ###############################################################################
    # Database properties section                                                 #
    ###############################################################################
    
    ## Main datasource
    quarkus.datasource."lcm-db".username=lcm
    quarkus.datasource."lcm-db".password=password
    quarkus.datasource."lcm-db".reactive.url=postgresql://localhost:5432/lcm
    ## If you need to specify default DB schema use the syntax below
    #quarkus.datasource."lcm-db".reactive.url=postgresql://localhost:5432/lcm?search_path=lcm_schema_name
    
    ## Main datasource Liquibase config
    quarkus.datasource."lcm-db".jdbc.url=jdbc:postgresql://localhost:5432/lcm
    quarkus.liquibase."lcm-db".default-schema-name=lcm
    quarkus.liquibase."lcm-db".migrate-at-start=True
    
    ## Readonly datasource
    quarkus.datasource."lcm-db-readonly".username=readonly
    quarkus.datasource."lcm-db-readonly".password=password
    quarkus.datasource."lcm-db-readonly".reactive.url=postgresql://localhost:5432/lcm
    quarkus.datasource."lcm-db-readonly".jdbc.url=jdbc:postgresql://localhost:5432/lcm
    
    ###############################################################################
    # Hardware inventory properties section                                       #
    ###############################################################################
    
    # Schedule for collections pillars synchronization with S3 (quartz cron format)
    # [At second :00, every 15 minutes starting at minute :00, of every hour]
    lcm.inventory.job.sync-collection-pillars.cron.expr=0 0/15 * ? * * *
    
    # Determines how long session history data should be stored before deletion, 90 days by default
    lcm.inventory.job.user-sessions-cleanup.storage-days-count=90
    
    # Schedule for session history cleaning (quartz cron format)
    # [At 00:00:00am every day]
    lcm.inventory.job.user-sessions-cleanup.cron-expr=0 0 0 ? * * *
    
    # Determines the maximum amount of machine custom attributes in one section
    lcm.inventory.machine-attribute.section.size=20
    
    # Determines the maximum amount of user custom attributes in one section
    lcm.inventory.user-attribute.section.size=20
    
    # The number of minutes since the last agent activity before the device goes into "Offline" status
    lcm.inventory.settings.agent.minutes-to-become-offline=5
    # Absolute file path to `wtmp` file which stores historical data of user logins and logouts
    lcm.inventory.settings.agent.user-session-file-path=/var/log/wtmp
    # Absolute file path to `utmp` file which stores user sessions in real time
    lcm.inventory.settings.agent.active-user-session-file-path=/var/run/utmp
    # Option, which determines the considered Salt mode (single- or multimaster), can be true or false
    lcm.inventory.settings.agent.multi-master-mode=true
    # Absolute path, containing all files which are to be included into bootstrap script configuration archive (.tar.gz)
    lcm.inventory.settings.agent.bootstrap-script-config-path=/config/script-configs/bootstrap/
    # Optional parameters, matching salt-ssh connection settings,
    # see https://docs.saltproject.io/en/latest/ref/runners/all/salt.runners.manage.html#salt.runners.manage.bootstrap
    #lcm.inventory.settings.agent.bootstrap-ssh-user=
    #lcm.inventory.settings.agent.bootstrap-ssh-password=
    #lcm.inventory.settings.agent.bootstrap-ssh-private-key-path=
    
    #enable JNDI for the LDAP server discovery inside the MS AD domain when you define option 'lcm.inventory.ldap.datasource[i].dns-srv-record'
    quarkus.naming.enable-jndi=true
    ## Determines the page size for any ldap query
    lcm.inventory.ldap.search-page-size=200
    ## The first LDAP datasource configuration
    lcm.inventory.ldap.datasource[0].name=my.domain.com
    lcm.inventory.ldap.datasource[0].base-dn=DC=my,DC=domain,DC=com
    ## There are 2 options to set LDAP hostname pools
    ## 1) direct addresses defining
    ## 2) using DNS SRV records to discover LDAP servers from MS AS domain
    ##
    ## For the direct addresses defining of LDAP datasource please use the following options:
    ## lcm.inventory.ldap.datasource[i].host=
    ## lcm.inventory.ldap.datasource[i].port=
    ## lcm.inventory.ldap.datasource[i].extra-hosts[j].host=
    ## lcm.inventory.ldap.datasource[i].extra-hosts[j].port=
    ##
    ## For the using DNS SRV records to discover LDAP servers from MS AS domain use the following options:
    ### lcm.inventory.ldap.datasource[i].dns-srv-record=
    ##
    lcm.inventory.ldap.datasource[0].host=localhost
    lcm.inventory.ldap.datasource[0].port=636
    lcm.inventory.ldap.datasource[0].username=administrator@my.domain.com
    lcm.inventory.ldap.datasource[0].password=Welkom123
    ## Optional section for the LDAP datasource
    # lcm.inventory.ldap.datasource[0].connect-timeout-millis=10000
    # lcm.inventory.ldap.datasource[0].response-timeout=10000
    # lcm.inventory.ldap.datasource[0].abandon-on-timeout=true
    # lcm.inventory.ldap.datasource[0].allow-concurrent-socket-factory-use=true
    
    ## The second and subsequent LDAP datasource configurations are optional
    #lcm.inventory.ldap.datasource[1].name=my2.domain.com
    #lcm.inventory.ldap.datasource[1].base-dn=DC=my2,DC=domain,DC=com
    #lcm.inventory.ldap.datasource[1].dns-srv-record=_ldap._tcp.dc._msdcs.mydomain.com
    #lcm.inventory.ldap.datasource[1]...
    
    ## LDAPS (LDAP over SSL) parameters section.
    # To configure LDAPS please use the following option
    #lcm.inventory.ldap.datasource[i].ssl=...
    
    # There are 3 options available for this option:
    # value `false` - use this mode when you want to use LDAP without SSL (usually 389 port)
    # value `true` - use this mode when you want to use LDAPS (usually 636 port), requires path to the certificate file or truststore file
    # value `start-tls` - use this mode when you want to establish an insecure connection (usually 389 port),
    #                     but then to immediately use the StartTLS extended operation to convert that insecure connection to a secure one
    #
    # If you want to trust all SSL certificates without direct certificate/truststore definition you can use the option
    # lcm.inventory.ldap.datasource[i].trust-all-ssl-certificates=true
    
    ## The following example shows how to configure LDAPS with certificate file definition for the datasource
    #lcm.inventory.ldap.datasource[0].ssl=true
    #lcm.inventory.ldap.datasource[0].ssl-certificate=/opt/inno-lcm-core/samba_cert.pem
    
    ## The following example shows how to configure LDAPS with truststore file definition for the datasource
    #lcm.inventory.ldap.datasource[0].ssl=true
    #lcm.inventory.ldap.datasource[0].ssl-trust-store=/opt/inno-lcm-core/keystore.jks
    #lcm.inventory.ldap.datasource[0].ssl-trust-store-type=PKCS12
    #lcm.inventory.ldap.datasource[0].ssl-trust-store-password=keystore@12345
    
    ## The following example shows how to configure LDAPS with truststore file definition for all datasource
    #lcm.inventory.ldap.ssl-trust-store=/opt/inno-lcm-core/keystore.jks
    #lcm.inventory.ldap.ssl-trust-store-type=JKS
    #lcm.inventory.ldap.ssl-trust-store-password=keystore@12345
    
    
    ###############################################################################
    # Application Store properties section                                        #
    ###############################################################################
    
    # Determines the amount of hours after which order is considered failed
    lcm.order-management.completion.time.hours=12
    # Schedule for tracking long-running orders as failed (quartz cron format)
    # [At second :00 of minute :00 of every hour]
    lcm.order-management.autocomplete.cron.expr=0 0 * ? * * *
    
    ###############################################################################
    # Kafka messages section                                                      #
    ###############################################################################
    
    ## Kafka bootstrap servers (comma separated)
    mp.messaging.connector.smallrye-kafka.bootstrap.servers=localhost:9092
    # Kafka topic name
    mp.messaging.incoming.salt-events-kafka.topic=salt-topic
    
    ## Kafka SSL connection parameters section.
    ## To enable SSL connection mode uncomment three following parameters:
    #mp.messaging.connector.smallrye-kafka.security.protocol=SSL
    #mp.messaging.connector.smallrye-kafka.ssl.truststore.location=/etc/ssl/certs/java/cacerts
    #mp.messaging.connector.smallrye-kafka.ssl.truststore.password=changeit
    ## Optionally if the custom truststore is used:
    ## To change the format use one of JKS, JCEKS, P12, PKCS12, PFX. Default format is JKS
    #mp.messaging.connector.smallrye-kafka.ssl.truststore.type=PKCS12
    
    ## To enable mutual TLS connection mode uncomment three following parameters, along with configuration above:
    #mp.messaging.connector.smallrye-kafka.ssl.keystore.location=/opt/inno-lcm-core/keystore.jks
    #mp.messaging.connector.smallrye-kafka.ssl.keystore.password=keystore@12345
    ## Optionally if the custom keystore is used:
    ## To change the format use one of JKS, JCEKS, P12, PKCS12, PFX. Default format is JKS
    #mp.messaging.connector.smallrye-kafka.ssl.keystore.type=PKCS12
    
    ###############################################################################
    # REST clients common configuration                                           #
    ###############################################################################
    
    ## SSL connection parameters sections.
    ## To enable accessing REST endpoints via HTTPS uncomment two following parameters:
    #quarkus.rest-client.trust-store=/etc/ssl/certs/java/cacerts
    #quarkus.rest-client.trust-store-password=changeit
    ## Optionally if the custom truststore is used:
    ## To change the format use one of JKS, JCEKS, P12, PKCS12, PFX. Default format is JKS
    #quarkus.rest-client.trust-store-type=PKCS12
    ## For disabling SSL connection verification you can use option below
    #quarkus.rest-client.remote-access.trust-all=true
    
    ###############################################################################
    # SaltStack integration section                                               #
    ###############################################################################
    
    lcm.salt-adapter.command-runner.http-scheme=http
    lcm.salt-adapter.command-runner.master-api-port=8000
    lcm.salt-adapter.command-runner.global-auth.eauth=pam
    lcm.salt-adapter.command-runner.global-auth.login=salt_api
    lcm.salt-adapter.command-runner.global-auth.password=123
    lcm.salt-adapter.command-runner.retry.number-of-attempts=5
    lcm.salt-adapter.command-runner.retry.initial-back-off=1s
    lcm.salt-adapter.command-runner.retry.max-back-off=1s
    
    ## Salt masters configuration section.
    ## Optional, this section should be used when backend server can't resolve salt master by DNS name
    #lcm.salt-adapter.command-runner.override-masters[0].id=salt-master1
    #lcm.salt-adapter.command-runner.override-masters[0].uri=http://192.168.0.1:8000
    
    ## The second and other Salt masters can be configured in the same way
    #lcm.salt-adapter.command-runner.override-masters[1].id=salt-master2
    #lcm.salt-adapter.command-runner.override-masters[1].uri=http://192.168.0.2:8000
    
    ###############################################################################
    # Remote access service integration section                                   #
    ###############################################################################
    
    # URL to the guacamole remote access service
    quarkus.rest-client.remote-access.url=https://guacamole-host.net:9099/guacamole
    # for an advanced configuration of the quarkus REST client to the guacamole service you can set up the following settings group
    #quarkus.rest-client.remote-access.connect-timeout
    #quarkus.rest-client.remote-access.trust-store
    #quarkus.rest-client.remote-access.trust-store-password
    #quarkus.rest-client.remote-access.trust-store-type
    #quarkus.rest-client.remote-access.key-store
    #quarkus.rest-client.remote-access.key-store-password
    #quarkus.rest-client.remote-access.key-store-type
    #quarkus.rest-client.remote-access.hostname-verifier
    #quarkus.rest-client.remote-access.connection-ttl
    #and others
    #quarkus.rest-client.remote-access.***
    
    # system account login for the guacamole remote access service
    lcm.inventory.remote-access.username=admin
    # system account login password for the guacamole remote access service
    lcm.inventory.remote-access.password=password
    
    ###############################################################################
    # S3 integration section                                                      #
    ###############################################################################
    
    # contains a list of S3 server URIs
    lcm.salt-adapter.s3.server-uri-list=http://localhost:9000,http://localhost:9900
    ## To enable SSL connection mode replace 'lcm.salt-adapter.s3.server-uri-list' parameter with following value:
    #lcm.salt-adapter.s3.server-uri-list=https://localhost:9000,https://localhost:9900
    lcm.salt-adapter.s3.access-key-id=s3adminSalt
    lcm.salt-adapter.s3.secret-access-key=s3adminSaltPassword
    lcm.salt-adapter.s3.region=ru-location-1
    lcm.salt-adapter.s3.connection-timeout=1s
    lcm.salt-adapter.s3.num-retries=3
    lcm.salt-adapter.s3.initial-retry-delay-millis=100
    lcm.salt-adapter.s3.max-retry-delay-millis=1000
    lcm.salt-adapter.s3.state-bucket-name=salt-bucket
    lcm.salt-adapter.s3.pillar-bucket-name=pillar-bucket
    lcm.salt-adapter.s3.script-bucket-name=script-bucket
    
    ###############################################################################
    # Multimedia service section                                                  #
    ###############################################################################
    
    # contains a list of S3 server URIs
    lcm.multimedia.s3.server-uri-list=http://localhost:9000,http://localhost:9900
    ## To enable SSL connection mode replace 'lcm.multimedia.s3.server-uri-list' parameter with following value:
    #lcm.multimedia.s3.server-uri-list=https://localhost:9000,https://localhost:9900
    lcm.multimedia.s3.access-key-id=s3adminMultimedia
    lcm.multimedia.s3.secret-access-key=s3adminMultimediaPassword
    lcm.multimedia.s3.region=ru-location-1
    lcm.multimedia.s3.connection-timeout=1s
    lcm.multimedia.s3.num-retries=3
    lcm.multimedia.s3.initial-retry-delay-millis=100
    lcm.multimedia.s3.max-retry-delay-millis=1000
    lcm.multimedia.s3.icons-bucket-name=multimedia-bucket
    lcm.multimedia.s3.images-bucket-name=multimedia-bucket
    lcm.multimedia.s3.others-bucket-name=multimedia-bucket
    lcm.multimedia.s3.script-bucket-name=script-bucket
    lcm.multimedia.common.max-file-size-kb=1024
    lcm.multimedia.common.download-token-ttl-seconds=3600
    lcm.multimedia.common.expired-tokens-deletion-cron=0 0 * ? * *
    # Contains current nginx frontend uri, used to form bootstrap script installation link
    lcm.multimedia.common.frontend-uri=http://localhost:8081
    
    ###############################################################################
    # Configurations manager section                                              #
    ###############################################################################
    
    # Determines maximum amount of categories per one configuration
    lcm.catalog.category.configuration-limit=5
    # Determines total amount of categories
    lcm.catalog.category.total-limit=15
    # Determines maximum salt-agent installation script file size in megabytes
    lcm.catalog.script.max-script-size-mbytes=10
    
    ###############################################################################
    # Software inventory section                                                  #
    ###############################################################################
    # Base directory for executable files scan
    lcm.inventory.software.executable-files.base-path-scan=/home/
    # Comma separated sections list which packages will be ignored
    lcm.inventory.software.packages.sections-blacklist=libs,non-free/libs,devel
    
    ###############################################################################
    # Logging section                                                             #
    ###############################################################################
    
    # Common logging config
    quarkus.log.file.enable=true
    quarkus.log.json.file.enable=true
    quarkus.log.json.console.enable=false
    
    # File logging config
    quarkus.log.file.path=/app/inno-osmax/logs/osmax/core/osmax-core.log
    quarkus.log.file.rotation.max-file-size=10M
    quarkus.log.file.rotation.max-backup-index=5
    quarkus.log.file.rotation.file-suffix=.yyyy-MM-dd.gz
    
    # Json format config
    quarkus.log.json.fields.mdc.flat-fields=true
    quarkus.log.json.fields.timestamp.date-format=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
    quarkus.log.json.fields.timestamp.zone-id=UTC
    
    # Audit logging config
    quarkus.log.handler.file.audit-handler.enable=true
    quarkus.log.handler.file.audit-handler.path=/app/inno-osmax/audit/osmax/core/audit-osmax-core.log
    quarkus.log.handler.file.audit-handler.rotation.max-file-size=10M
    quarkus.log.handler.file.audit-handler.rotation.max-backup-index=50
    quarkus.log.handler.file.audit-handler.rotation.file-suffix=.yyyy-MM-dd
    
    quarkus.log.category."AUDIT".level=INFO
    quarkus.log.category."AUDIT".handlers=audit-handler
    quarkus.log.category."AUDIT".use-parent-handlers=false
    
    ###############################################################################
    # Debug section                                                               #
    # Enable all logging events via environment variable `QUARKUS_PROFILE=debug`  #
    # or delete `%debug.` prefix                                                  #
    ###############################################################################
    
    # HTTP server access logs (uri + status)
    %debug.quarkus.http.access-log.enabled=true
    
    # Internal rest-client
    %debug.quarkus.rest-client.logging.scope=request-response
    %debug.quarkus.rest-client.logging.body-limit=500
    %debug.quarkus.log.category."org.jboss.resteasy.reactive.client.logging".level=DEBUG
    %debug.quarkus.log.category."org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext".level=DEBUG
    
    # SaltStack events
    %debug.quarkus.log.category."tech.inno.lcm.salt.events".level=DEBUG
    
    # All backend services
    %debug.quarkus.log.category."tech.inno.lcm".level=DEBUG
    
    # Kerberos
    %debug.quarkus.kerberos.debug=true
    %debug.quarkus.log.category."io.quarkiverse.kerberos.runtime.KerberosIdentityProvider".level=TRACE
    %debug.quarkus.log.category."io.quarkiverse.kerberos.runtime.KerberosIdentityProvider".min-level=TRACE
    
    # AWS client
    %debug.quarkus.log.category."software.amazon.awssdk.request".level=DEBUG
    
    ###############################################################################
    # Quarkus framework section                                                   #
    ###############################################################################
    
    # application is run under specific user, those settings allow not clashing with other quarkus apps on the same server
    quarkus.http.body.uploads-directory=${java.io.tmpdir}/inno_osmax_core_uploads
    quarkus.management.body.uploads-directory=${java.io.tmpdir}/inno_osmax_core_uploads
    Перед запуском systemd-службы lcm измените права доступа к конфигурационному файлу, предоставив доступ только для пользователя, от имени которого она будет запускаться.

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

    Подключение к HTTP-серверу
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.http.port

    Основной порт подключения

    8081

    8081

    Подключение к HTTPS-серверу
    Настройки, описанные в разделе, являются опциональными и используются, только при подключении по протоколу SSL.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.http.insecure-requests

    Возможные значения:

    • enabled — HTTP-порт открыт;

    • disabled — HTTP-порт закрыт;

    • redirect — HTTP-порт открыт, но все запросы будут перенаправляться на HTTPS-порт

    disabled

    quarkus.http.ssl-port

    Порт для подключения к HTTPS-серверу

    8081

    quarkus.http.ssl.certificate.key-store-file

    Путь к хранилищу (keystore-файлу), где хранятся закрытые ключи и сертификаты, необходимые для установки защищенного HTTPS-соединения

    /opt/inno-lcm-core/keystore.jks

    quarkus.http.ssl.certificate.key-store-password

    Пароль для доступа к keystore-файлу

    keystore@12345

    Аутентификация и авторизация
    Параметры quarkus.kerberos.keytab-path и quarkus.kerberos.service-principal-<name/password/real> являются опциональными и взаимозаменяемыми. С точки зрения безопасности рекомендуется использовать keytab-файл для аутентификации в домене и указывать параметр quarkus.kerberos.keytab-path.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.application.auth.disabled

    Включение/выключение аутентификации Kerberos. Возможные значения: true и false

    false

    false

    quarkus.kerberos.debug

    (Опциональный параметр) включение/выключение отправки сообщений для отладки Kerberos. Возможные значения: true и false

    true

    quarkus.kerberos.service-principal-name

    (Опциональный параметр) имя принципала для аутентификации Kerberos

    lcm_backend_svc

    quarkus.kerberos.service-principal-realm

    (Опциональный параметр) наименование области безопасности (realm) принципала

    my.domain.com

    quarkus.kerberos.service-principal-password

    (Опциональный параметр) пароль принципала

    Password123

    quarkus.kerberos.keytab-path

    (Опциональный параметр) путь к keytab-файлу, который содержит зашифрованные ключи и сертификаты, необходимые для аутентификации в домене.

    /opt/inno-lcm-core/my_file.keytab

    lcm.authorization.user-groups-white-list[0]

    (Устаревший опциональный параметр) список групп LDAP, пользователи которых авторизованы в графическом интерфейсе администратора

    CN=testGroup,CN=Users,DC=inno,DC=test

    lcm.authorization.rbac.enabled

    Включение/выключение авторизации RBAC

    false

    false

    lcm.authorization.rbac.super-users[0]

    Пользователи, которым будут выданы права суперпользователя при запуске продукта. Параметр задается, если включена Авторизация RBAC (lcm.authorization.rbac.enabled=true).

    Параметр задается отдельно для каждого пользователя, начиная с 0, например:

    lcm.authorization.rbac.super-users[0]=alice@INNO.TEST
    lcm.authorization.rbac.super-users[1]=bob@INNO.TEST

    alice@INNO.TEST

    Подключение к БД
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.datasource."lcm-db".username

    Имя пользователя для подключения к БД

    lcm

    lcmadmin

    quarkus.datasource."lcm-db".password

    Пароль пользователя для подключения к БД

    password

    qwerty123

    quarkus.datasource."lcm-db".reactive.url

    Адрес подключения серверной части продукта к БД. Формат:

    pass:[postgresql://{db_host}:{db_port}/{db_name}]
    Если необходимо указать схему по умолчанию используйте синтаксис: postgresql://localhost:5432/lcm?search_path=lcm_schema_name

    postgresql://localhost:5432/lcm

    postgresql://10.6.32.156:5432/lcm

    quarkus.datasource."lcm-db".jdbc.url

    Адрес подключения к БД. Параметр используется утилитой Liquibase для актуализации схемы БД. Формат:

    pass:[jdbc:postgresql://{db_host}:{db_port}/{db_name}]

    jdbc:postgresql://localhost:5432/lcm

    jdbc:postgresql://10.6.32.156:5432/lcm

    quarkus.liquibase."lcm-db".default-schema-name

    Имя схемы данных

    lcm

    lcm

    quarkus.liquibase."lcm-db".migrate-at-start

    Включение/выключение автоматического обновления структуры БД с помощью утилиты Liquibase. Возможные значения: true и false

    True

    True

    quarkus.datasource."lcm-db-readonly".username

    Имя пользователя с правами только на чтение данных (read-only) для подключения к БД

    readonly

    lcmuser

    quarkus.datasource."lcm-db-readonly".password

    Пароль пользователя с правами только на чтение данных (read-only) для подключения к БД

    password

    lcmuserpassword

    quarkus.datasource."lcm-db-readonly".reactive.url

    Адрес подключения серверной части продукта к БД. Формат:

    pass:[postgresql://{db_host}:{db_port}/{db_name}]

    postgresql://localhost:5432/lcm

    postgresql://localhost:5432/lcm

    quarkus.datasource."lcm-db-readonly".jdbc.url

    Адрес подключения к БД. Формат:

    pass:[jdbc:postgresql://{db_host}:{db_port}/{db_name}]

    jdbc:postgresql://localhost:5432/lcm

    jdbc:postgresql://10.6.32.156:5432/lcm

    Инвентаризация оборудования
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.inventory.job-sync-collection-pillars.cron.expr

    Cron-выражение в формате quartz, которое задает частоту синхронизации состава коллекций на бэкенде продукта и на сервере управления (master) (см. описание формата в разделе «Cron-выражение формата Quartz» документа «Руководство по эксплуатации»)

    0 0/15 * ? * * *

    0/10 * * ? * * *

    lcm.inventory.job.user-sessions-cleanup.storage-days-count

    Период хранения данных истории сессий пользователей (количество дней), по истечении которого они будут удалены

    90

    90

    lcm.inventory.job.user-sessions-cleanup.cron-expr

    Cron-выражение в формате quartz, которое задает расписание удаления данных истории сессий пользователей (см. описание формата в разделе «Cron-выражение формата Quartz» документа «Руководство по эксплуатации»)

    0 0 0 ? * * *

    0 0 0 ? * * *

    lcm.inventory.machine-attribute.section.size

    Максимальное количество атрибутов устройств в одном разделе

    20

    20

    lcm.inventory.user-attribute.section.size

    Максимальное количество пользовательских атрибутов в одном разделе

    20

    20

    lcm.inventory.settings.agent.minutes-to-become-offline

    Интервал в минутах, в течение которого на агенте (minion) нет активности. По истечению этого интервала сетевой статус агента (minion) будет изменен на неактивный (offline)

    5

    5

    lcm.inventory.settings.agent.user-session-file-path

    Путь к файлу на сервере с агентом (minion), в котором хранится информация о сессиях пользователей

    /var/log/wtmp

    /var/log/wtmp

    lcm.inventory.settings.agent.active-user-session-file-path

    Путь к файлу на сервере с агентом (minion), в котором хранится информация о текущих сессиях пользователей

    /var/run/utmp

    /var/run/utmp

    lcm.inventory.settings.agent.multi-master-mode

    Включение/выключение режима «мульти-мастер»

    true

    true

    lcm.inventory.settings.agent.bootstrap-script-config-path

    Абсолютный путь до всех файлов, которые должны быть включены в архив конфигурации скрипта загрузки агентов (формат: .tar.gz).

    /config/script-configs/bootstrap/

    /config/script-configs/bootstrap/

    lcm.inventory.settings.agent.bootstrap-ssh-user

    (Опциональный параметр) имя пользователя SSH, который будет использоваться при загрузке агента (minion)

    lcm.inventory.settings.agent.bootstrap-ssh-password

    (Опциональный параметр) пароль пользователя SSH, который будет использоваться при загрузке агента (minion)

    lcm.inventory.settings.agent.bootstrap-ssh-private-key-path

    (Опциональный параметр) путь к приватному ключу SSH, который будет использоваться при загрузке агента (minion)

    Интеграция с источниками данных LDAP

    Нумерация массива lcm.inventory.ldap.datasource начинается с 0.

    Параметры подключения к домену №2 аналогичны параметрам домена №1.

    Пример:

    • lcm.inventory.ldap.datasource[1].host=192.168.0.1;

    • lcm.inventory.ldap.datasource[1].name=domain_alias2;

    • lcm.inventory.ldap.datasource[1].port=389.

    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.naming.enable-jndi

    Включение JNDI (Java Naming and Directory Interface) для обнаружения в домене MS AD при определении параметра lcm.inventory.ldap.datasource[i].dns-srv-record

    false

    true

    lcm.inventory.ldap.search-page-size

    Максимальное количество записей, которое будет возвращаться в ответ на один запрос синхронизации с LDAP-сервером. Чем больше значение, тем больше данных LDAP-серверу необходимо обработать в рамках одного запроса. Чем меньше значение, тем дольше будет выполняться синхронизация

    200

    200

    lcm.inventory.ldap.datasource[0].name

    Название источника данных (например, имя домена)

    my.domain.com

    lcm-1583.terra.inno.tech

    lcm.inventory.ldap.datasource[0].base-dn

    Базовое имя домена в формате LDAP

    DC=my,DC=domain,DC=com

    DC=lcm-1583,DC=terra,DC=inno,DC=tech

    lcm.inventory.ldap.datasource[0].username

    Имя пользователя для подключения к домену LDAP-сервера.

    Может быть указано в одном из следующих форматов:

    • <имя_пользователя>@<имя домена>, например ivanov@INNO;

    • пользователь в формате LDAP, например, CN=ivanov,CN=Users,DC=inno,DC=local

    administrator@my.domain.com

    Administrator@lcm-1583.terra.inno.tech

    lcm.inventory.ldap.datasource[0].password

    Пароль пользователя для подключения к домену LDAP-сервера

    Welkom123

    Welkom123

    Группа опциональных параметров, которые используются для явного указания пулов адресов/имен хостов с источниками данных LDAP:

    Параметры являются взаимозаменяемыми с параметром lcm.inventory.ldap.datasource[i].dns-srv-record

    lcm.inventory.ldap.datasource[i].host

    IP-адрес или сетевое имя контроллера домена (LDAP-сервера)

    10.6.32.204

    lcm.inventory.ldap.datasource[i].port

    Порт для соединения по протоколу LDAP

    389; для LDAP over SSL обычно используется порт 636

    Группа (массив) опциональных адресов/портов дополнительных LDAP-серверов (контроллеров доменов):

    Для каждого элемента массива lcm.inventory.ldap.datasource[i].extra-hosts должны быть заданы оба параметра host и port, например:

    • lcm.inventory.ldap.datasource[0].extra-hosts[0].host=reserve-server.domain.com;

    • lcm.inventory.ldap.datasource[0].extra-hosts[0].port=389;

    • lcm.inventory.ldap.datasource[0].extra-hosts[1].host=old-server.domain.com;

    • lcm.inventory.ldap.datasource[0].extra-hosts[1].port=390;

    • lcm.inventory.ldap.datasource[0].extra-hosts[2].host=test-server.domain.com;

    • lcm.inventory.ldap.datasource[0].extra-hosts[2].port=390

    lcm.inventory.ldap.datasource[i].extra-hosts[j].host

    Опциональный параметр, в котором задается хост дополнительного LDAP-сервера указанного источника (домена)

    test-server.domain.com

    lcm.inventory.ldap.datasource[i].extra-hosts[j].port

    Опциональный параметр, в котором задается порт дополнительного LDAP-сервера указанного источника (домена)

    390

    Опциональный параметр, который используются для настройки пулов имен хостов через использование записей DNS SRV для обнаружения LDAP-серверов из домена MS AD.

    Параметр является взаимозаменяемым с параметрами, описанными выше

    lcm.inventory.ldap.datasource[i].dns-srv-record

    (Опциональный параметр) Запись SRV (Service) в DNS, которая используется для обнаружения и автоматического определения конфигурации LDAP-сервера.

    Чаще всего при публикации сервисов в DNS SRV контроллеры доменов MS AD публикуют LDAP-сервис на незащищенном порту 389 (без SSL). Чтобы при такой конфигурации с автоматичекским обнаружением контроллеров домена со службами LDAP использовать защищенное соединение, рекомендуется использовать опцию lcm.inventory.ldap.datasource[i].ssl=start-tls

    ldap._tcp.dc._msdcs.mydomain.com

    Опциональные параметры:

    lcm.inventory.ldap.datasource[0].connect-timeout-millis

    Максимальная длительность подключения к LDAP-серверу в миллисекундах. Значение 0 означает бесконечное ожидание

    10000

    lcm.inventory.ldap.datasource[0].response-timeout

    Максимальная длительность выполнения запроса к LDAP-серверу в миллисекундах. Значение 0 означает бесконечное ожидание

    10000

    lcm.inventory.ldap.datasource[0].abandon-on-timeout

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

    true

    lcm.inventory.ldap.datasource[0].allow-concurrent-socket-factory-use

    Параметр, указывающий, разрешать ли использование экземпляра фабрики сокетов (который может совместно использоваться несколькими соединениями) для одновременного создания нескольких сокетов. Возможные значения: true и false

    true

    Интеграция с источниками данных LDAP по протоколу SSL
    Группы параметров, описанные ниже, являются опциональными и настраиваются при подключении к LDAP-серверу по протоколу SSL.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.inventory.ldap.datasource[i].ssl

    Параметр, отвечающий за соединение по протоколу SSL (LDAPS).

    Возможные значения:

    • false — использование LDAP без SSL (обычно порт 389);

    • true — использование LDAPS (обычно порт 636); в данном случае требуется путь к файлу сертификата или файлу хранилища доверенных сертификатов;

    • start-tls — использование небезопасного соединения (обычно порт 389) вместе с расширенной операцией StartTLS для преобразования этого небезопасного соединения в безопасное

    true

    lcm.inventory.ldap.datasource[i].trust-all-ssl-certificates

    Параметр, определяющий, будет ли система доверять всем SSL-сертификатам при подключении к LDAP-серверу

    true

    lcm.inventory.ldap.datasource[i].ssl-certificate

    Относительный или абсолютный путь к файлу с сертификатом для подключения через LDAPS. Опциональный параметр

    /opt/inno-lcm-core/samba_cert.pem

    Группа параметров, которая позволяет задать путь к файлу доверенного хранилища сертификатов отдельно для каждого источника данных LDAP (значение задается с 0):

    lcm.inventory.ldap.datasource[i].ssl-trust-store

    Путь к файлу хранилища доверенных сертификатов (truststore) для указанного источника данных LDAP

    /opt/inno-lcm-core/keystore.jks

    lcm.inventory.ldap.datasource[i].ssl-trust-store-type

    Тип хранилища доверенных сертификатов для указанного источника данных LDAP

    PKCS12

    lcm.inventory.ldap.datasource[i].ssl-trust-store-password

    Пароль для доступа к хранилищу доверенных сертификатов указанного источника данных LDAP

    keystore@12345

    Группа параметров, которая позволяет задать путь к общему доверенному хранилищу сертификатов для всех источников данных LDAP:

    lcm.inventory.ldap.ssl-trust-store

    Путь к файлу хранилища доверенных сертификатов (truststore) для источника данных LDAP

    /opt/inno-lcm-core/keystore.jks

    lcm.inventory.ldap.ssl-trust-store-type

    Тип хранилища доверенных сертификатов для источника данных LDAP, например JKS, JCEKS, P12, PKCS12, PFX

    JKS

    lcm.inventory.ldap.ssl-trust-store-password

    Пароль для доступа к хранилищу доверенных сертификатов источника данных LDAP

    keystore@12345

    Работа с пользовательским интерфейсом «Магазин приложений»
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.order-management.completion.time.hours

    Период времени (в часах), по истечению которого заявка будет считаться невыполненной

    12

    12

    lcm.order-management.autocomplete.cron.expr

    Cron-выражение в формате quartz, задающее расписание выполнения проверки долго выполняющихся заказов, после которой они будут считаться невыполненными (см. описание формата в разделе «Cron-выражение формата Quartz» документа «Руководство по эксплуатации»)

    0 0 * ? * * *

    0 0 * ? * * *

    Интеграция с Apache Kafka
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    mp.messaging.connector.smallrye-kafka.bootstrap.servers

    Адрес сервера для подключения к брокеру Apache Kafka, который будет использоваться для получения сообщений от серверов управления (masters)

    localhost:9092

    10.6.32.156:9092

    mp.messaging.incoming.salt-events-kafka.topic

    Топик Apache Kafka, из которого будут поступать сообщения

    salt-topic

    salt-topic

    Настройка SSL-соединения с Apache Kafka
    Параметры из данного блока являются опциональными и задаются, только если требуется SSL для Apache Kafka.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    mp.messaging.connector.smallrye-kafka.security.protocol

    SSL-протокол для защищенного соединения

    SSL

    mp.messaging.connector.smallrye-kafka.ssl.truststore.location

    Путь к файлу с сертификатами в хранилище доверенных сертификатов (truststore)

    /etc/ssl/certs/java/cacerts

    mp.messaging.connector.smallrye-kafka.ssl.truststore.password

    Пароль для доступа к хранилищу доверенных сертификатов

    truststore@12345

    mp.messaging.connector.smallrye-kafka.ssl.truststore.type

    Тип хранилища, например JKS, JCEKS, P12, PKCS12, PFX. Если значение не задано, по умолчанию используется значение JKS

    PKCS12

    mp.messaging.incoming.salt-events-kafka.ssl.keystore.location

    Путь к файлу с закрытыми ключами и сертификатами клиента в хранилище ключей (keystore)

    /opt/inno-lcm-core/keystore.jks

    /opt/inno-lcm-core/keystore.jks

    mp.messaging.incoming.salt-events-kafka.ssl.keystore.password

    Пароль для доступа к хранилищу ключей

    keystore@12345

    keystore@12345

    mp.messaging.connector.smallrye-kafka.ssl.keystore.type

    Тип хранилища, например JKS, JCEKS, P12, PKCS12, PFX. Если значение не задано, по умолчанию используется значение JKS

    PKCS12

    Настройки REST-клиентов
    Настройки, описанные в разделе, являются опциональными и используются, только при подключении по протоколу SSL.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.rest-client.trust-store

    Путь к файлу хранилища доверенных сертификатов (truststore), который содержит сертификаты доверенных центров сертификации

    /etc/ssl/certs/java/cacerts

    quarkus.rest-client.trust-store-password

    Пароль для доступа к хранилищу доверенных сертификатов

    truststore@12345

    quarkus.rest-client.trust-store-type

    Тип хранилища, например JKS, JCEKS, P12, PKCS12, PFX. Если значение не задано, по умолчанию используется значение JKS

    PKCS12

    quarkus.rest-client.remote-access.trust-all

    Отключение проверки SSL-соединения

    true

    Интеграция с API SaltStack
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.salt-adapter.command-runner.http-scheme

    Протокол, который будет использоваться для отправки HTTP-запросов между компонентами Salt Adapter и Command Runner модуля координации. Возможные значения: http или https

    http

    http

    lcm.salt-adapter.command-runner.master-api-port

    Порт, на котором будет запущен API-модуль сервера управления (master). Значение параметра задается для всех используемых серверов управления (masters)

    8000

    8000

    lcm.salt-adapter.command-runner.global-auth.eauth

    Тип аутентификации для запросов. Значение параметра задается для всех используемых серверов управления (masters). Возможные значения: ldap или pam. ldap — аутентификация через внешний LDAP-сервер, pam — аутентификация с помощью локальной учетной записи на машине, на которой установлен сервер управления (master).

    Если установлено значение pam, для сервера управления (master) требуется root-доступ

    pam

    pam

    lcm.salt-adapter.command-runner.global-auth.login

    Логин для подключения к серверу управления (master). Значение параметра задается для всех используемых серверов управления (masters)

    salt_api

    salt_api

    lcm.salt-adapter.command-runner.global-auth.password

    Пароль для подключения к серверу управления (master). Значение параметра задается для всех используемых серверов управления (masters)

    salt123

    salt123

    lcm.salt-adapter.command-runner.retry.number-of-attempts

    Количество попыток выполнения команды, после неудачной попытки

    5

    5

    lcm.salt-adapter.command-runner.retry.initial-back-off

    Начальное время задержки перед повторной попыткой выполнения команды после неудачной попытки

    1s

    1s

    lcm.salt-adapter.command-runner.retry.max-back-off

    Максимальное время задержки перед повторной попыткой выполнения команды. Если команда не выполняется успешно даже после максимальной задержки, она завершится ошибкой

    1s

    1s

    Опциональные параметры:

    lcm.salt-adapter.command-runner.override-masters[0].id

    Имя машины, на которой установлен сервер управления (master)

    При использовании нескольких серверов управления (masters) значение задается отдельно для каждого; нумерация массива начинается с [0]. Пример: lcm.salt-adapter.command-runner.override-masters[0].id=salt-master1, lcm.salt-adapter.command-runner.override-masters[1].id=salt-master2

    salt-master2

    lcm.salt-adapter.command-runner.override-masters[0].uri

    Полный адрес API-модуль сервера управления (master), указанного в параметре lcm.salt-adapter.command-runner.override-masters[0].id

    При использовании нескольких серверов управления (masters) значение задается отдельно для каждого; нумерация массива начинается с [0]. Пример: lcm.salt-adapter.command-runner.override-masters[0].http://192.168.0.1:8000, lcm.salt-adapter.command-runner.override-masters[0].uri=http://192.168.0.2:8000

    http://192.168.0.2:8000

    Интеграция с модулем «Удаленный доступ»
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.rest-client.remote-access.url

    URL-адрес для подключения к модулю «Удаленный доступ»

    https://guacamole-host.net:9099/guacamole

    https://guacamole-host.net:9099/guacamole

    lcm.inventory.remote-access.username

    Аккаунт для входа в модуль «Удаленный доступ»

    admin

    admin

    lcm.inventory.remote-access.password

    Пароль от аккаунта для входа в модуль «Удаленный доступ»

    12345

    12345

    Опциональные параметры, которые используются для расширенной настройки REST-клиента Quarkus модуля «Удаленный доступ»:

    quarkus.rest-client.remote-access.connect-timeout

    Таймаут соединения при обращении к удаленному серверу

    quarkus.rest-client.remote-access.trust-store

    Путь к файлу доверенных сертификатов для проверки подлинности удаленного сервера

    quarkus.rest-client.remote-access.trust-store-password

    Пароль для доступа к файлу доверенных сертификатов

    quarkus.rest-client.remote-access.trust-store-type

    Тип хранилища доверенных сертификатов (например, JKS)

    quarkus.rest-client.remote-access.key-store

    Путь к файлу с ключами (keystore) для аутентификации при обращении к удаленному серверу

    quarkus.rest-client.remote-access.key-store-password

    Пароль для доступа к файлу с ключами (keystore)

    quarkus.rest-client.remote-access.key-store-type

    Тип хранилища ключей (например, JKS)

    quarkus.rest-client.remote-access.hostname-verifier

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

    quarkus.rest-client.remote-access.connection-ttl

    Длительность соединения с удаленным сервером

    Интеграция с S3-совместимым хранилищем
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.salt-adapter.s3.server-uri-list

    URI для подключения к S3-совместимому хранилищу, в котором будут храниться файлы для SaltStack.

    Для переключения взаимодействия с S3-совместимым хранилищем по протоколу SSL:

    1. Измените URI c http на https.

    2. Разместите публичный сертификат сервера S3 или сертификат выдавшего его удостоверяющего центра в системное хранилище сертификатов

    http://10.6.32.156:9000

    lcm.salt-adapter.s3.access-key-id

    Идентификатор ключа (access Key) S3-совместимого хранилища

    s3adminSalt

    minionadmin

    lcm.salt-adapter.s3.secret-access-key

    Секретный ключ (Secret Key) S3-совместимого хранилища

    s3adminSaltPassword

    minionadmin123

    lcm.salt-adapter.s3.region

    Название региона S3 NOTE: Для хранилища Ceph данный параметр не учитывается. Если вы используете Сeph в качестве хранилища, укажите значение default

    ru-location-1

    ru-location-1

    lcm.salt-adapter.s3.connection-timeout

    Таймаут соединения с S3-совместимым хранилищем

    1s

    1s

    lcm.salt-adapter.s3.num-retries

    Максимальное количество попыток повторного подключения к S3-совместимому хранилищу после неудачного подключения

    3

    3

    lcm.salt-adapter.s3.initial-retry-delay-millis

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

    100

    100

    lcm.salt-adapter.s3.max-retry-delay-millis

    Максимальная задержка перед повторной попыткой подключения в миллисекундах

    1000

    1000

    lcm.salt-adapter.s3.state-bucket-name

    Название бакета S3 для хранения общих файлов конфигураций и файлов состояний

    salt-bucket

    salt-bucket

    lcm.salt-adapter.s3.pillar-bucket-name

    Название бакета S3 для хранения данных Pillar

    pillar-bucket

    pillar-bucket

    lcm.salt-adapter.s3.script-bucket-name

    Название бакета S3 для хранения исполняемых файлов (скриптов), предназначенных для установки агентов (minions) на устройства

    script-bucket

    script-bucket

    Хранение мультимедиа-файлов в S3-совместимом хранилище
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.multimedia.s3.server-uri-list

    URI для подключения к S3-совместимому хранилищу, в котором будут храниться мультимедиа-файлы продукта (иконки, скриншоты).

    Для переключения взаимодействия с S3-совместимым хранилищем по протоколу SSL:

    1. Измените URI c http на https.

    2. Разместите публичный сертификат сервера S3 или сертификат выдавшего его удостоверяющего центра в системное хранилище сертификатов

    http://localhost:9000,http://localhost:9900

    http://10.6.32.156:9000

    lcm.multimedia.s3.access-key-id

    Идентификатор ключа (access Key) S3-совместимого хранилища мультимедиа-контента

    s3adminMultimedia

    minioadmin

    lcm.multimedia.s3.secret-access-key

    Секретный ключ (Secret Key) S3-совместимого хранилища мультимедиа-контента для доступа к сервису S3 (пароль)

    s3adminMultimediaPassword

    minioadmin123

    lcm.multimedia.s3.region

    Название региона S3 для хранилища мультимедиа-контента NOTE: Для хранилища Ceph данный параметр не учитывается. Если вы используете Сeph в качестве хранилища, укажите значение default

    ru-location-1

    ru-location-1

    lcm.multimedia.s3.connection-timeout

    Таймаут соединения с S3-совместимым хранилищем

    1s

    1s

    lcm.multimedia.s3.num-retries

    Максимальное количество попыток повторного подключения к S3-совместимому хранилищу, после неудачного подключения

    3

    3

    lcm.multimedia.s3.initial-retry-delay-millis

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

    100

    100

    lcm.multimedia.s3.max-retry-delay-millis

    Максимальная задержка перед повторной попыткой подключения в миллисекундах

    1000

    1000

    lcm.multimedia.s3.icons-bucket-name

    Название бакета S3 для хранения иконок

    multimedia-bucket

    icons-bucket

    lcm.multimedia.s3.images-bucket-name

    Название бакета S3 для хранения изображений и скриншотов

    multimedia-bucket

    images-bucket

    lcm.multimedia.s3.others-bucket-name

    Название бакета S3 для хранения прочего контента

    multimedia-bucket

    others-bucket

    lcm.multimedia.s3.script-bucket-name

    Название бакета S3 для хранения исполняемых файлов (скриптов), предназначенных для установки агентов (minions) на устройства

    script-bucket

    script-bucket

    lcm.multimedia.common.max-file-size-kb

    Максимальный размер файла в килобайтах

    1024

    1024

    lcm.multimedia.common.frontend-uri

    URI для доступа к фронтенду

    http://localhost:8081

    http://localhost:8081

    Управление конфигурациями
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.catalog.category.configuration-limit

    Максимальное количество категорий для одной конфигурации

    5

    5

    lcm.catalog.category.total-limit

    Общее число категорий

    15

    15

    lcm.catalog.script.max-script-size-mbytes

    Максимальный размер файла скрипта установки агентов (minions) в мегабайтах

    10

    10

    Инвентаризация ПО

    Основные настройки сбора данных о ПО на устройстве выполняются в пользовательском интерфейсе «Кабинет администратора» (см. документ «Руководство администратора» раздел «Сбор данных программного обеспечения»):

    • настройка расписания сбора данных;

    • настройки ограничений:

      • возможность задать список каталогов, которые должны быть исключены из сканирования;

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

    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.inventory.software.executable-files.base-path-scan

    Базовый каталог для сканирования исполняемых файлов

    /home/

    /home/

    lcm.inventory.software.packages.sections-blacklist

    Список секций, пакеты которых должны быть исключены из сканирования. Значения указываются через запятую

    libs,non-free/libs,devel

    libs,non-free/libs,devel

    Логирование
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.log.file.enable

    Активация логирования в файл. Возможные значения: true и false

    true

    true

    quarkus.log.json.file.enable

    Включение/выключение форматирования логов в JSON при записи в файл

    true

    true

    quarkus.log.json.console.enable

    Включение/выключение форматирования логов в JSON при выводе в консоль

    false

    false

    quarkus.log.file.path

    Путь для сохранения файлов с логами продукта

    /app/inno-osmax/logs/osmax/core/osmax-core.log

    /app/inno-osmax/logs/osmax/core/osmax-core.log

    quarkus.log.file.rotation.max-file-size

    Максимальный размер одного файла с логами, после чего будет произведена ротация (создан следующий файл и продолжена запись)

    10М

    10М

    quarkus.log.file.rotation.max-backup-index

    Предельное количество сохраняемых файлов с логами при ротации

    5

    5

    quarkus.log.file.rotation.file-suffix

    Суффикс для имен файлов логов после их ротации

    .yyyy-MM-dd.gz

    .yyyy-MM-dd.gz

    quarkus.log.json.fields.mdc.flat-fields

    Параметр, который указывает, что контекст MDC (Mapped Diagnostic Context) должен быть записан в плоском формате

    true

    true

    quarkus.log.json.fields.timestamp.date-format

    Формат даты и времени для поля timestamp в JSON

    yyyy-MM-dd’T’HH:mm:ss.SSS’Z'

    yyyy-MM-dd’T’HH:mm:ss.SSS’Z'

    quarkus.log.json.fields.timestamp.zone-id

    Часовой пояс для поля timestamp в JSON

    UTC

    UTC

    quarkus.log.handler.file.audit-handler.enable

    Включение/выключение обработчика для логов аудита

    true

    true

    quarkus.log.handler.file.audit-handler.path

    Путь к файлу, в который будут записываться логи аудита

    /app/inno-osmax/audit/osmax/core/audit-osmax-core.log

    /app/inno-osmax/audit/osmax/core/audit-osmax-core.log

    quarkus.log.handler.file.audit-handler.rotation.max-file-size

    Максимальный размер файла логов аудита до переноса в исторический файл

    10M

    10M

    quarkus.log.handler.file.audit-handler.rotation.max-backup-index

    Максимальное количество резервных копий файлов логов аудита

    50

    50

    quarkus.log.handler.file.audit-handler.rotation.file-suffix

    Суффикс для имен файлов логов аудит после их ротации

    .yyyy-MM-dd

    .yyyy-MM-dd

    quarkus.log.category."AUDIT".level

    Настройка уровня логирования. Возможные значения:

    • FATAL — сообщение об ошибке, которая привела к критическому сбою программы;

    • ERROR — сообщение об ошибке, которая привела к некритическому сбою программы;

    • WARN — предупреждение о потенциальной проблеме или необычном состоянии, которое не является ошибкой, но требует внимания;

    • INFO — информационное сообщение о ходе работы программы, которое может быть полезно для мониторинга и отладки;

    • DEBUG — детальная отладочная информация, которая помогает разработчикам выявлять и исправлять проблемы в коде;

    • TRACE — cамый низкий уровень важности, предоставляющий еще более детальную информацию, которая используется для отслеживания каждого шага алгоритма или функции.

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

    quarkus.log.category.<"system module">

    Пример:

    quarkus.log.category."AUDIT".level=DEBUG

    INFO

    INFO

    quarkus.log.category."AUDIT".handlers

    Обработчик, который будет использоваться для категории "AUDIT"

    audit-handler

    audit-handler

    quarkus.log.category."AUDIT".use-parent-handlers

    Включение/выключение использования родительских обработчиков для категории "AUDIT"

    false

    false

    Отладка
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    %debug.quarkus.http.access-log.enabled

    Включение/выключение логирования доступа к HTTP-серверу (uri и статус). Возможные значения: true и false

    true

    true

    %debug.quarkus.rest-client.logging.scope

    Уровень логирования для внутреннего REST-клиента, который будет записывать информацию о запросах и ответах

    request-response

    request-response

    %debug.quarkus.rest-client.logging.body-limit

    Размер тела запроса/ответа

    500

    500

    %debug.quarkus.log.category."org.jboss.resteasy.reactive.client.logging".level

    Уровень логирования для пакета org.jboss.resteasy.reactive.client.logging

    DEBUG

    DEBUG

    %debug.quarkus.log.category."org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext".level

    Уровень логирования для класса org.jboss.resteasy.reactive.common.core.AbstractResteasyReactiveContext

    DEBUG

    DEBUG

    %debug.quarkus.log.category."tech.inno.lcm.salt.events".level

    Уровень логирования для событий SaltStack

    DEBUG

    DEBUG

    %debug.quarkus.log.category."tech.inno.lcm".level

    Уровень логирования для всех сервисов бэкенда, начинающихся с tech.inno.lcm

    DEBUG

    DEBUG

    %debug.quarkus.kerberos.debug

    Включение/выключение дополнительного логирования для аутентификации Kerberos. Возможные значения: true и false

    true

    true

    %debug.quarkus.log.category."io.quarkiverse.kerberos.runtime.KerberosIdentityProvider".level

    Уровень логирования для класса io.quarkiverse.kerberos.runtime.KerberosIdentityProvider

    TRACE

    TRACE

    %debug.quarkus.log.category."io.quarkiverse.kerberos.runtime.KerberosIdentityProvider".min-level

    Минимальный уровень логирования для класса io.quarkiverse.kerberos.runtime.KerberosIdentityProvider

    TRACE

    TRACE

    %debug.quarkus.log.category."software.amazon.awssdk.request".level

    Уровень логирования для категории запросов к сервисам Amazon AWS SDK

    DEBUG

    DEBUG

    Фреймворк Quarkus
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.http.body.uploads-directory

    Каталог для временного хранения файлов, загружаемых посредством API

    ${java.io.tmpdir}/inno_osmax_core_uploads

    ${java.io.tmpdir}/inno_osmax_core_uploads

    quarkus.management.body.uploads-directory

    Каталог для временного хранения файлов, загружаемых посредством служебных API

    ${java.io.tmpdir}/inno_osmax_core_uploads

    ${java.io.tmpdir}/inno_osmax_core_uploads

    Установка пакета inno-lcm-provisioner

    Чтобы установить пакет inno-lcm-provisioner, выполните команду:

    sudo dnf install ./<пакет>

    Пример:

    sudo dnf install /inno-lcm/inno-lcm-provisioner_1.0.0-1_amd64.rpm -y
    Проверка установки

    После успешной установки пакета:

    1. Создан конфигурационный файл с настройками по умолчанию — /opt/inno-lcm-provisioner/application.properties (описание настроек см. в разделе «Конфигурация бэкенда»).

      В случае когда выполняется обновление продукта до более новой версии, файл application.properties будет оставаться неизменным, но дополнительно будет создаваться файл application.example.properties. Этот файл будет носить ознакомительный характер и использоваться в качестве примера для самостоятельного переопределения параметров в конфигурационном файле application.properties.
    2. Создана systemd-служба inno-lcm-provisioner.

      При установке пакета inno-lcm-provisioner автоматически создается пользователь inno-osmax-provisioner, от имени которого будет запускаться systemd-служба inno-lcm-provisioner. При обновлении или удалении пакета пользователь удален не будет.

    Чтобы запустить systemd-службу inno-lcm-provisioner, выполните команду:

    sudo systemctl start <имя службы>

    Пример:

    sudo systemctl start inno-lcm-provisioner

    Для включения автозапуска systemd-службы inno-lcm-provisioner используйте команду:

    sudo systemctl enable inno-lcm-provisioner

    Для проверки статуса запуска службы используйте команду:

    sudo systemctl status inno-lcm-provisioner

    В случае успешного запуска система вернет ответ, где в поле Active будет указано значение active (running):

    systemctl status inno-lcm-provisioner
    ● inno-lcm-provisioner.service - LCM Provisioner Service
       Loaded: loaded (/etc/systemd/system/inno-lcm-provisioner.service; enabled; vendor preset: enabled)
       Active: active (running) since Fri 2024-06-21 12:58:28 MSK; 12s ago
     Main PID: 130308 (inno-lcm-provis)
        Tasks: 32 (limit: 19048)
       Memory: 200.3M
       CGroup: /system.slice/inno-lcm-provisioner.service
               └─130308 /opt/inno-lcm-provisioner/bin/inno-lcm-provisioner

    При неуспешном запуске поле Active будет содержать иное значение. В этом случае проверьте логи системы (см. раздел «Рекомендации по сбору и предоставлению информации о проблеме/ошибке» документа «Руководство по эксплуатации»).

    Конфигурация модуля inno-lcm-provisioner

    Конфигурация бэкенда выполняется в файле application.properties, помещенном в каталог /opt/inno-lcm-provisioner. Файл создается автоматически при установке rpm-пакета inno-lcm-provisioner и содержит значения по умолчанию.

    Пример конфигурационного файла с настройками по умолчанию

    ## This is an example of `application.properties` file as main configuration file for lcm-provisioner backend
    
    ###############################################################################
    # HTTP server properties section                                              #
    ###############################################################################
    
    ## Main application port
    quarkus.http.port=8082
    
    ###############################################################################
    # Security section                                                            #
    ###############################################################################
    
    ## Enable/disable authentication
    lcm.provisioner.security.disable-authentication=false
    
    ## Kerberos authentication configuration section
    ## There are 2 alternative options for defining Kerberos credentials [principal realm, name and password]:
    ## 1) via setting values in properties directly
    ## 2) via setting path to keytab file
    ##
    ## Direct Kerberos credentials definition:
    quarkus.kerberos.service-principal-name=<service_principal_name>
    quarkus.kerberos.service-principal-realm=<service.domain>
    quarkus.kerberos.service-principal-password=<service_principal_password>
    ## Kerberos keytab file definition:
    #quarkus.kerberos.keytab-path=</path/to/keytab/file>
    ## Enables Kerberos authentication debug mode
    #quarkus.kerberos.debug=true
    
    ###############################################################################
    # Database properties section                                                 #
    ###############################################################################
    
    ## Common configuration for datasources
    quarkus.datasource.username=<db-username>
    quarkus.datasource.password=<db-password>
    ## Reactive datasource configuration for app
    quarkus.datasource.reactive.url=postgresql://<db-host>:<db-port>/<db-name>
    ## Datasource configuration for Liquibase
    quarkus.datasource.jdbc.url=jdbc:postgresql://<db-host>:<db-port>/<db-name>
    
    ## Liquibase parameters which are used in changelog files
    quarkus.liquibase.change-log-parameters.index_tablespace=pg_default
    quarkus.liquibase.change-log-parameters.data_tablespace=pg_default
    quarkus.liquibase.change-log-parameters.installation_distro_repository_url=http://<astra-linux-repository-location>
    quarkus.liquibase.change-log-parameters.installation_distro_kernel=</path/to/kernel>
    quarkus.liquibase.change-log-parameters.installation_distro_initrd=</path/to/initrd>
    quarkus.liquibase.change-log-parameters.distro_repository_hostname=<astra-linux-repository-location>
    quarkus.liquibase.change-log-parameters.distro_repository_directory=</path/to/repository>
    
    ###############################################################################
    # Template engine properties section                                          #
    ###############################################################################
    
    ## To specify custom template placeholders which can be used in Jinja templates use a key-value format like
    ## 'lcm-provisioner.template-engine.template-placeholders.my-custom-placeholder=my-value-for-custom-placeholder'
    ## Be aware that specified custom template placeholders
    ## should be used in exact format as they are specified in this configuration
    lcm.provisioner.template-engine.template-placeholders.osmax_provisioner_base_url=http://<osmax-provisioner-host>:<port>
    lcm.provisioner.template-engine.template-placeholders.unattended_install_file_url=/v1/unattended_install_files
    
    ###############################################################################
    # Installation process properties section                                     #
    ###############################################################################
    
    lcm.provisioner.installation-process.steps.READY_TO_INSTALL=\u0413\u043E\u0442\u043E\u0432\u043E \u043A \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0435
    lcm.provisioner.installation-process.steps.IN_PROCESS_EARLY=\u0417\u0430\u043F\u0443\u0449\u0435\u043D \u043F\u0440\u043E\u0446\u0435\u0441\u0441 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 Astra Linux SE
    lcm.provisioner.installation-process.steps.INSTALL_ERROR_KERNEL=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 kernel
    lcm.provisioner.installation-process.steps.INSTALL_ERROR_INITRD=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 initrd
    lcm.provisioner.installation-process.steps.INSTALL_ERROR_BOOT=\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u0433\u0440\u0443\u0437\u043A\u0438 \u044F\u0434\u0440\u0430
    lcm.provisioner.installation-process.steps.FINISHED=\u041E\u0421 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0430
    
    ###############################################################################
    # S3 integration section                                                      #
    ###############################################################################
    
    ## S3 server configuration
    lcm.provisioner.s3.server-uri=http://<s3-host>:<s3-port>
    lcm.provisioner.s3.access-key-id=<s3-access-key-id>
    lcm.provisioner.s3.secret-access-key=<s3-secret-access-key>
    lcm.provisioner.s3.region=ru-location-1
    
    ## Path to ISO images bucket where generated ISO images will be located
    lcm.provisioner.s3.bootable-images-bucket-name=os-installation-iso-images-bucket
    
    ###############################################################################
    # Logging section                                                             #
    ###############################################################################
    
    # Common logging config
    quarkus.log.file.enable=true
    quarkus.log.json.file.enable=true
    quarkus.log.json.console.enable=false
    
    # Json log format config
    quarkus.log.json.fields.mdc.flat-fields=true
    quarkus.log.json.fields.timestamp.date-format=yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
    quarkus.log.json.fields.timestamp.zone-id=UTC
    
    # File logging config
    quarkus.log.file.path=/app/inno-osmax/logs/osmax/provisioner/osmax-provisioner.log
    quarkus.log.file.rotation.max-file-size=10M
    quarkus.log.file.rotation.max-backup-index=5
    quarkus.log.file.rotation.file-suffix=.yyyy-MM-dd.gz
    
    # Audit logging config
    quarkus.log.handler.file.audit-handler.enable=true
    quarkus.log.handler.file.audit-handler.path=/app/inno-osmax/audit/osmax/provisioner/audit-osmax-provisioner.log
    quarkus.log.handler.file.audit-handler.rotation.max-file-size=10M
    quarkus.log.handler.file.audit-handler.rotation.max-backup-index=50
    quarkus.log.handler.file.audit-handler.rotation.file-suffix=.yyyy-MM-dd
    quarkus.log.category."AUDIT".level=INFO
    quarkus.log.category."AUDIT".handlers=audit-handler
    quarkus.log.category."AUDIT".use-parent-handlers=false
    Перед запуском systemd-службы inno-lcm-provisioner измените права доступа к конфигурационному файлу, предоставив доступ только для пользователя, от имени которого она будет запускаться.

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

    Подключение к HTTP-серверу
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.http.port

    Основной порт подключения

    8082

    8082

    Аутентификация и авторизация
    Параметры quarkus.kerberos.keytab-path и quarkus.kerberos.service-principal-<name/password/real> являются опциональными и взаимозаменяемыми. С точки зрения безопасности рекомендуется использовать keytab-файл для аутентификации в домене и указывать параметр quarkus.kerberos.keytab-path.
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.provisioner.security.disable-authentication

    Включение/выключение аутентификации Kerberos. Возможные значения: true и false

    false

    false

    quarkus.kerberos.service-principal-name

    (Опциональный параметр) имя принципала для аутентификации Kerberos

    <service_principal_name>

    quarkus.kerberos.service-principal-realm

    (Опциональный параметр) наименование области безопасности (realm) принципала

    <service.domain>

    quarkus.kerberos.service-principal-password

    (Опциональный параметр) пароль принципала

    <service_principal_password>

    quarkus.kerberos.keytab-path

    (Опциональный параметр) путь к keytab-файлу, который содержит зашифрованные ключи и сертификаты, необходимые для аутентификации в домене.

    </path/to/keytab/file>

    /opt/inno-provisioner/my_file.keytab

    quarkus.kerberos.debug

    (Опциональный параметр) включение/выключение отправки сообщений для отладки Kerberos. Возможные значения: true и false

    true

    Подключение к БД
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.datasource.username

    Имя пользователя для подключения к БД

    <db-username>

    db-provisioner-user

    quarkus.datasource.password

    Пароль пользователя для подключения к БД

    <db-password>

    db-qwerty123

    quarkus.datasource.reactive.url

    Адрес подключения серверной части продукта к БД

    postgresql://<db-host>:<db-port>/<db-name>

    postgresql://10.6.32.156:5432:db-8082/db-provisioner

    quarkus.datasource.jdbc.url

    Адрес подключения к БД. Параметр используется утилитой Liquibase для актуализации схемы БД

    jdbc:postgresql://<db-host>:<db-port>/<db-name>

    jdbc:postgresql://10.6.32.157:8082/lcm

    quarkus.liquibase.change-log-parameters.index_tablespace

    Таблица пространства имен (tablespace) для индексов, создаваемых Liquibase

    pg_default

    pg_default

    quarkus.liquibase.change-log-parameters.data_tablespace

    Таблица пространства имен (tablespace) для данных, создаваемых Liquibase

    pg_default

    pg_default

    quarkus.liquibase.change-log-parameters.installation_distro_repository_url

    URL-адрес репозитория, который используется для установки дистрибутива

    http://<repository-location>

    quarkus.liquibase.change-log-parameters.installation_distro_kernel

    Путь к ядру дистрибутива, которое используется при установке

    </path/to/kernel>

    quarkus.liquibase.change-log-parameters.installation_distro_initrd

    Путь к initrd (initial ramdisk) дистрибутива, которое используется при установке

    </path/to/initrd>

    quarkus.liquibase.change-log-parameters.distro_repository_hostname

    Имя хоста репозитория c дистрибутивами устанавливаемой ОС

    <repository-location>

    quarkus.liquibase.change-log-parameters.distro_repository_directory

    Путь к директории репозитория

    </path/to/repository>

    Параметры шаблонов установки ОС
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm-provisioner.template-engine.template-placeholders.my-custom-placeholder

    Пользовательский заполнитель (placeholder) шаблона, который может использоваться в шаблонах Jinja; задается в формате «ключ - значение»; например, пользовательскому заполнителю шаблона с именем my-custom-placeholder присвоено значение my-value-for-custom-placeholder

    my-value-for-custom-placeholder

    lcm.provisioner.template-engine.template-placeholders.osmax_provisioner_base_url

    Базовый URL модуля установки ОС

    http://<osmax-provisioner-host>:<port>

    lcm.provisioner.template-engine.template-placeholders.unattended_install_file_url

    URL-адрес API модуля inno-lcm-provisioner, предоставляющего файл автоответов, сформированный по шаблону

    /v1/unattended_install_files

    Параметры отображения шагов в истории процесса установки
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.provisioner.installation-process.steps.<step_code>

    Преобразование названий шагов (событий) процесса установки ОС в русскоязычные значения для отображения в пользовательском интерфейсе «Кабинет Администратора». Значения по умолчанию:

    • READY_TO_INSTALL — ОС готова к установке;

    • IN_PROCESS_EARLY — ОС в процессе установки;

    • INSTALL_ERROR_KERNEL — ошибка в процессе установки ОС, связанная с ядром (kernel);

    • INSTALL_ERROR_INITRD — ошибка в процессе установки ОС, связанная с Initial RAM Disk;

    • INSTALL_ERROR_BOOT — ошибка в процессе установки ОС, связанная с загрузочным процессом;

    • FINISHED — установка ОС завершена.

    При необходимости вы можете отредактировать данные параметры или задать дополнительные шаги

    \u0413\u043E\u0442\u043E\u0432\u043E \u043A \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0435

    Интеграция с S3-совместимым хранилищем
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    lcm.provisioner.s3.server-uri

    URI для подключения к S3-совместимому хранилищу, в котором будут храниться файлы модуля inno-lcm-provisioner.

    Для переключения взаимодействия с S3-совместимым хранилищем по протоколу SSL:

    1. Измените URI c http на https.

    2. Разместите публичный сертификат сервера S3 или сертификат выдавшего его удостоверяющего центра в системное хранилище сертификатов

    http://<s3-host>:<s3-port>

    http://10.6.32.156:9000

    lcm.provisioner.s3.access-key-id

    Идентификатор ключа (access Key) S3-совместимого хранилища

    <s3-access-key-id>

    provisioneradmin

    lcm.provisioner.s3.secret-access-key

    Секретный ключ (Secret Key) S3-совместимого хранилища

    <s3-secret-access-key>

    provisioneradmin

    lcm.provisioner.s3.region

    Название региона S3 NOTE: Для хранилища Ceph данный параметр не учитывается. Если вы используете Сeph в качестве хранилища, укажите значение default

    ru-location-1

    ru-location-1

    lcm.provisioner.s3.bootable-images-bucket-name

    Путь к бакету, в котором хранятся ISO-образы

    os-installation-iso-images-bucket

    os-installation-iso-images-bucket

    Логирование
    Наименование Описание Значение по умолчанию/Шаблон значения Пример значения

    quarkus.log.file.enable

    Активация логирования в файл. Возможные значения: true и false

    true

    true

    quarkus.log.json.file.enable

    Включение/выключение форматирования логов в JSON при записи в файл

    true

    true

    quarkus.log.json.console.enable

    Включение/выключение форматирования логов в JSON при выводе в консоль

    false

    false

    quarkus.log.json.fields.mdc.flat-fields

    Параметр, который указывает, что контекст MDC (Mapped Diagnostic Context) должен быть записан в плоском формате

    true

    true

    quarkus.log.json.fields.timestamp.date-format

    Формат даты и времени для поля timestamp в JSON

    yyyy-MM-dd’T’HH:mm:ss.SSS’Z'

    yyyy-MM-dd’T’HH:mm:ss.SSS’Z'

    quarkus.log.json.fields.timestamp.zone-id

    Часовой пояс для поля timestamp в JSON

    UTC

    UTC

    quarkus.log.file.path

    Путь для сохранения файлов с логами продукта

    /app/inno-osmax/logs/osmax/provisioner/osmax-provisioner.log

    /app/inno-osmax/logs/osmax/provisioner/osmax-provisioner.log

    quarkus.log.file.rotation.max-file-size

    Максимальный размер одного файла с логами, после чего будет произведена ротация (создан следующий файл и продолжена запись)

    10М

    10М

    quarkus.log.file.rotation.max-backup-index

    Предельное количество сохраняемых файлов с логами при ротации

    5

    5

    quarkus.log.file.rotation.file-suffix

    Суффикс для имен файлов логов после их ротации

    .yyyy-MM-dd.gz

    .yyyy-MM-dd.gz

    quarkus.log.handler.file.audit-handler.enable

    Включение/выключение обработчика для логов аудита

    true

    true

    quarkus.log.handler.file.audit-handler.path

    Путь к файлу, в который будут записываться логи аудита

    /app/inno-osmax/audit/osmax/provisioner/audit-osmax-provisioner.log

    /app/inno-osmax/audit/osmax/provisioner/audit-osmax-provisioner.log

    quarkus.log.handler.file.audit-handler.rotation.max-file-size

    Максимальный размер файла логов аудита до переноса в исторический файл

    10M

    10M

    quarkus.log.handler.file.audit-handler.rotation.max-backup-index

    Максимальное количество исторических файлов логов аудита

    50

    50

    quarkus.log.handler.file.audit-handler.rotation.file-suffix

    Суффикс для имен файлов логов аудита после их ротации

    .yyyy-MM-dd

    .yyyy-MM-dd

    quarkus.log.category."AUDIT".level

    Настройка уровня логирования. Возможные значения:

    • FATAL — сообщение об ошибке, которая привела к критическому сбою программы;

    • ERROR — сообщение об ошибке, которая привела к некритическому сбою программы;

    • WARN — предупреждение о потенциальной проблеме или необычном состоянии, которое не является ошибкой, но требует внимания;

    • INFO — информационное сообщение о ходе работы программы, которое может быть полезно для мониторинга и отладки;

    • DEBUG — детальная отладочная информация, которая помогает разработчикам выявлять и исправлять проблемы в коде;

    • TRACE — cамый низкий уровень важности, предоставляющий еще более детальную информацию, которая используется для отслеживания каждого шага алгоритма или функции.

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

    quarkus.log.category.<"system module">

    Пример:

    quarkus.log.category."AUDIT".level=DEBUG

    INFO

    INFO

    quarkus.log.category."AUDIT".handlers

    Обработчик, который будет использоваться для категории "AUDIT"

    audit-handler

    audit-handler

    quarkus.log.category."AUDIT".use-parent-handlers

    Включение/выключение использования родительских обработчиков для категории "AUDIT"

    false

    false

    Запуск службы inno-lcm-provisioner

    Чтобы запустить systemd-службу inno-lcm-provisioner, выполните команду:

    sudo systemctl start <имя службы>

    Пример:

    sudo systemctl start inno-lcm-provisioner

    Для включения автозапуска systemd-службы inno-lcm-provisioner используйте команду:

    sudo systemctl enable inno-lcm-provisioner

    Для проверки статуса запуска службы используйте команду:

    sudo systemctl status inno-lcm-provisioner

    В случае успешного запуска система вернет ответ, где в поле Active будет указано значение active (running):

    systemctl status inno-lcm-provisioner
    ● inno-lcm-provisioner.service - LCM Provisioner Service
       Loaded: loaded (/etc/systemd/system/inno-lcm-provisioner.service; enabled; vendor preset: enabled)
       Active: active (running) since Fri 2024-06-21 12:58:28 MSK; 12s ago
     Main PID: 130308 (inno-lcm-provis)
        Tasks: 32 (limit: 19048)
       Memory: 200.3M
       CGroup: /system.slice/inno-lcm-provisioner.service
               └─130308 /opt/inno-lcm-provisioner/bin/inno-lcm-provisioner

    При неуспешном запуске поле Active будет содержать иное значение. В этом случае проверьте логи системы (см. раздел «Рекомендации по сбору и предоставлению информации о проблеме/ошибке» документа «Руководство по эксплуатации»).

    Установка и настройка фронтенда продукта

    Установку фронтенда можно выполнить как на отдельном сервере, так и на сервере вместе с бэкендом продукта.

    Фронтенд продукта включает два отдельных модуля:

    • inno-lcm-webadmin — «Кабинет администратора»;

    • inno-lcm-app-shop — «Магазин приложений».

    Каждый модуль устанавливается отдельно с помощью одноименного rpm-пакета. Модули устанавливаются одинаково.

    Установите пакеты inno-lcm-webadmin и inno-lcm-app-shop, выполнив команду:

    sudo dnf install ./<имя пакета>

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

    sudo dnf install ./inno-lcm-webadmin-1.6.0~465909.af37daaf-1.noarch.rpm
    sudo dnf install ./inno-lcm-app-shop-1.6.0~465738.aeaf71cd-1.noarch.rpm

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

    sudo dnf list | grep "<имя модуля>"

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

    sudo dnf list | grep "inno-lcm-webadmin"
    sudo dnf list | grep "inno-lcm-app-shop"

    В случае успешной установки система вернет ответ:

    inno-lcm-webadmin/1.7_x86-64,now 1.6.0 all [установлен]

    В случае неуспешной установки проверьте логи системы (см. раздел «Рекомендации по сбору и предоставлению информации о проблеме/ошибке» документа «Руководство по эксплуатации»).

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

    • /var/www/lcm-web-ui;

    • /var/www/lcm-app-shop-ui.

    Для корректной работы модулей настройте веб-сервер. Для этого создайте необходимые конфигурационные файлы и переопределите в них значения параметров.

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

    Ниже в качестве примера рассмотрена конфигурация веб-сервера для модуля inno-lcm-webadmin.

    Конфигурация веб-сервера (на примере Nginx)

    Чтобы задать рабочую конфигурацию, выполните действия:

    1. Создайте конфигурационный файл, выполнив команду:

      sudo nano /etc/nginx/conf.d/lcm-web-ui.conf

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

      server {
          listen      80;
          listen      [::]:80;
          server_name staging-osmax.terra.inno.tech osmax-web-ui.lcm.terra.inno.tech osmax-web-ui osmax-web-ui.local;
          root        /var/www/lcm-web-ui;
          index       index.html;
      
          error_log   /var/log/nginx/error.log debug;
          access_log  /var/log/nginx/access.log;
      
          location / {
              try_files $uri $uri/ /index.html;
          }
      
          location /api/provisioner {
              set $backend_uri http://127.0.0.1:8082;
              rewrite ^\/api/provisioner(\/.*)$ $1 break;
              proxy_pass $backend_uri;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
          }
      
          location /api {
              set $backend_uri http://127.0.0.1:8081;
              rewrite ^\/api(\/.*)$ $1 break;
              proxy_pass $backend_uri;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
          }
      }
      
      server {
          listen      443 ssl;
          listen      [::]:443 ssl;
          server_name staging-osmax.terra.inno.tech osmax-web-ui.lcm.terra.inno.tech osmax-web-ui osmax-web-ui.local;
          root        /var/www/lcm-web-ui;
          index       index.html;
      
          ssl_certificate     /etc/certs/TERRA_INNO_TECH_CRT;
          ssl_certificate_key /etc/certs/TERRA_INNO_TECH_KEY;
      
          error_log  /var/log/nginx/error.log debug;
          access_log /var/log/nginx/access.log;
      
          location / {
              try_files $uri $uri/ /index.html;
          }
      
          location /api/provisioner {
              set $backend_uri http://127.0.0.1:8082;
              rewrite ^\/api/provisioner(\/.*)$ $1 break;
              proxy_pass $backend_uri;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
          }
      
          location /api {
              set $backend_uri http://127.0.0.1:8081;
              rewrite ^/api(/.*)$ $1 break;
              proxy_pass $backend_uri;
              proxy_set_header Host $host;
              proxy_set_header X-Real-IP $remote_addr;
              proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header X-Forwarded-Proto $scheme;
          }
      }

      Где:

      • listen — настраивает прослушивание портов на сервере;

      • server_name  — доменное имя, которое будет обслуживаться сервером;

      • root — указывает директорию, в которой находятся статические файлы, отображаемые при запросе корневой директории;

      • index — задает стандартный файл, который будет отображаться при запросе корневой директории;

      • ssl_certificate — указывает SSL -сертификат для обеспечения безопасного соединения;

      • ssl_certificate_key — определяет путь к файлу приватного ключа SSL-сертификата;

      • error_log — указывает файл логов для логирования ошибок;

      • access_log — указывает файл логов для логирования ошибок доступа;

      • location / — указывает веб-серверу на поиск запрашиваемых файлов в директории root; и если файл будет не найден, указывает на файл index.html;

      • location /api/provisioner — настраивает проксирование запросов к API-серверу модуля inno-lcm-provisioner;

      • location /api —  настраивает проксирование запросов к API-серверу модуля inno-lcm-core;

        При установке фронтенда на отдельный сервер, в параметре set $backend_uri укажите корректный адрес бэкенда.
        • proxy_pass — директива, перенаправляющая запросы к /api на указанный бэкенд;

        • proxy_set_header — директива, устанавливающая необходимую информацию в заголовках запроса.

    2. Для передачи данных по HTTP переопределите значения только в первом блоке server; для передачи по HTTPS — также переопределите значения во втором блоке.

      1. В первом блоке server в поле server_name укажите имя домена.

      2. В первом блоке server в поле location /api/provisioner задайте адрес обращения к бэкенду (inno-lcm-provisioner).

      3. В первом блоке server в поле location /api задайте адрес обращения к бэкенду (inno-lcm-core).

      4. (Опционально) во втором блоке server в поле server_name укажите имя домена.

      5. (Опционально) во втором блоке server в поле location /api/provisioner задайте адрес обращения к бэкенду (inno-lcm-provisioner).

      6. (Опционально) во втором блоке server в поле location /api задайте адрес обращения к бэкенду (inno-lcm-core).

      7. (Опционально) в поле ssl_certificate укажите SSL-сертификат для обеспечения безопасного соединения.

      8. (Опционально) в поле ssl_certificate_key задайте путь к файлу приватного ключа SSL-сертификата.

    3. Активируйте файл в конфигурации веб-сервера, создав для него символическую ссылку в каталоге /etc/nginx/sites-enabled/:

      ln -s /etc/nginx/sites-available/lcm-web-ui.conf /etc/nginx/sites-enabled/
    4. Перезапустите веб-сервер, выполнив команду:

      systemctl restart nginx.service
    5. Убедитесь, что веб-сервер успешно работает, выполнив команду:

      systemctl status nginx.service

      В случае успешного запуска система вернет ответ:

      ● nginx.service - A high performance web server and a reverse proxy server
         Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
         Active: active (running) since Fri 2024-02-09 16:21:31 MSK; 4s ago
           Docs: man:nginx(8)
        Process: 23739 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
        Process: 23740 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
       Main PID: 23741 (nginx)
          Tasks: 3 (limit: 4653)
         Memory: 2.2M
         CGroup: /system.slice/nginx.service
                 ├─23741 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
                 ├─23742 nginx: worker process
                 └─23743 nginx: worker process
      
      фев 09 16:21:31 lr-441246-cm-1 systemd[1]: Starting A high performance web server and a reverse proxy server...
      фев 09 16:21:31 lr-441246-cm-1 systemd[1]: Started A high performance web server and a reverse proxy server.

      В качестве дополнительной простой проверки вы можете выполнить запрос посредством утилиты curl на доменное имя, указанное в параметре server_name:

      curl -I domain-of-your-lcm-web-ui.vpn.company.com
      HTTP/1.1 200 OK
      Server: nginx/1.22.1
      Date: Fri, 09 Feb 2024 13:32:44 GMT
      Content-Type: text/html
      Content-Length: 551
      Last-Modified: Tue, 06 Feb 2024 12:20:20 GMT
      Connection: keep-alive
      ETag: "65c22404-227"
      Accept-Ranges: bytes

    Установка модуля «Удаленный доступ»

    Установка модуля «Удаленный доступ» является опциональной и выполняется после установки модуля координации (SaltStack), бэкенда и фронтенда.

    Подготовка к установке

    На этапе подготовки к установке убедитесь, что:

    1. Для PostgreSQL:

      1. Создана техническая учетная запись пользователя.

      2. Техническому пользователю назначена схема, в которой будут созданы таблицы схемы Guacamole.

      3. Техническому пользователю выданы права на выполнение DDL-операций.

    2. Настроен DNS.

    3. Настроена служба каталогов.

    4. Создана техническая учетная запись пользователя службы каталогов.

    5. (Опционально) сгенерированы SSL-сертификаты и закрытый ключ.

    Установка и конфигурирование

    Чтобы установить модуль «Удаленный доступ», выполните следующие шаги в заданной последовательности:

    Скачивание и распаковка архива с компонентами модуля

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

    1. Скачайте архив с rpm-пакетами требуемой версии и соответствующие файлы контрольных сумм из предоставленного хранилища любым доступным способом.

    2. Перенесите скачанный архив на машину, на которой будут запускаться компоненты, выполнив команду scp (secure copy):

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

      scp inno-lcm-all-1.8.0.tar.gz 10.6.32.218
    3. Распакуйте архив, выполнив команду:

      tar xvf <имя_архива>

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

      tar xvf inno-lcm-all-1.8.0.tar.gz -C lcm-all
    Установка и конфигурирование компонента inno-ira-guacamole-server

    Установка выполняется на сервере шлюза удаленного доступа.

    Шаги выполнения:

    1. Установите зависимый пакет libinnovncserver компонента inno-ira-guacamole-server, выполнив команду:

      sudo dnf install ./libinnovncserver-*.rpm
    2. Установите зависимый пакет libinnofreerdp компонента inno-ira-guacamole-server, выполнив команду:

      sudo dnf install ./libinnofreerdp-*.rpm
    3. Установите пакет inno-ira-guacamole-server, выполнив команду:

      sudo dnf install ./inno-ira-guacamole-server-*.rpm

      После успешной установки будет создана и запущена systemd-служба guacd.

    1. Создайте конфигурационный файл для сервера Guacamole, выполнив команду:

      touch /etc/guacamole/guacd.conf
    2. В файле /etc/guacamole/guacd.conf задайте значения параметров:

      Наименование Описание Значение по умолчанию Обязательный параметр

      Секция настройки сервера ([server])

      bind_host

      Хост компонента guacd

      localhost

      Да

      bind_port

      Порт компонента guacd

      4822

      Да

      Секция настройки daemon-сервера ([daemon])

      log_level

      Уровень логирования

      info

      Нет

      Секция настройки SSL-соединения ([ssl])

      server_certificate

      Путь до SSL-сертификата

      Нет

      server_key

      Путь до ключа SSL-сертификата

      Нет

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

      [server]
      bind_host = ira-server.domain.local
      bind_port = 4822
      
      [daemon]
      log_level = debug
      
      [ssl]
      server_certificate = /ssl/domain.pem
      server_key = /ssl/domain.key
    3. Перезапустите systemd-службу guacd, выполнив команду:

      sudo systemctl restart guacd

    Для проверки статуса запуска службы используйте команду:

    sudo systemctl status guacd

    В случае успешного запуска система вернет ответ, где в поле Active будет указано значение active (running):

    systemctl status guacd
    ● guacd.service - Guacamole Server
       Loaded: loaded (/usr/local/lib/systemd/system/guacd.service; disabled; vendor preset: enabled)
       Active: active (running) since Thu 2024-05-30 09:00:29 MSK; 1s ago
         Docs: man:guacd(8)
     Main PID: 19060 (guacd)
        Tasks: 1 (limit: 4651)
       Memory: 10.1M
          CPU: 15ms
       CGroup: /system.slice/guacd.service
               └─19060 /usr/local/sbin/guacd -f
    
    мая 30 09:00:29 ira-server systemd[1]: Started Guacamole Server.
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Guacamole proxy daemon (guacd) version 1.5.4 started
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Successfully bound AF_INET socket to host 127.0.0.1, port 4822
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Communication will require SSL/TLS.
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Using PEM keyfile /ssl/domain.key
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Using certificate file /ssl/domain.pem
    мая 30 09:00:29 ira-server guacd[19060]: IRC: Listening on host 127.0.0.1, port 4822

    При неуспешном запуске поле Active будет содержать иное значение. В этом случае проверьте логи системы (см. раздел «Рекомендации по сбору и предоставлению информации о проблеме/ошибке» документа «Руководство по эксплуатации»).

    Установка и конфигурирование компонента inno-ira-guacamole-client

    Установка выполняется на сервере шлюза удаленного доступа.

    Шаги выполнения:

    1. Установите пакет tomcat, выполнив команду:

      sudo dnf install tomcat
    2. Установите пакет inno-ira-guacamole-client, выполнив команду:

      sudo dnf install ./inno-ira-guacamole-client-*.rpm
    3. Создайте каталог для клиента Guacamole, выполнив команду:

      mkdir -p /etc/guacamole/
    4. Создайте конфигурационный файл для клиента Guacamole, выполнив команду:

      touch /etc/guacamole/guacamole.properties
    5. В файле guacamole.properties задайте значения параметров:

      Наименование Описание Значение по умолчанию Обязательный параметр

      Параметры сервера

      guacd-hostname

      Имя хоста guacd-сервера

      localhost

      Нет

      guacd-port

      Порт guacd-сервера

      4822

      Нет

      guacd-ssl

      Использование SSL

      false

      Нет

      Параметры подключения к БД PostgreSQL

      postgresql-hostname

      Имя хоста БД PostgreSQL

      Да

      postgresql-port

      Порт БД PostgreSQL

      5432

      Нет

      postgresql-database

      Имя БД PostgreSQL

      Да

      postgresql-username

      Имя пользователя БД PostgreSQL

      Да

      postgresql-password

      Пароль пользователя БД PostgreSQL

      Да

      Параметры подключения к БД PostgreSQL с использованием SSL

      postgresql-ssl-cert-file

      Файл, содержащий SSL-сертификат клиента, который используется при установке соединения с сервером Postgres в формате PEM

      postgresql-ssl-key-file

      Файл, содержащий закрытый ключ клиента

      postgresql-ssl-root-cert-file

      Файл, содержащий корневой и промежуточный сертификаты

      postgresql-ssl-key-password

      Пароль, который будет использоваться для доступа к файлу закрытого ключа

      postgresql-default-statement-timeout

      Время ожидания ответа от БД в секундах

      postgresql-socket-timeout

      Время ожидания выполнения операций чтения сокета

      postgresql-batch-size

      Количество объектов, которые можно получить из базы данных за один запрос

      Параметры LDAP

      ldap-hostname

      Имя хоста LDAP-сервера

      Да

      ldap-port

      Имя порта LDAP-сервера

      389 или 636 (в зависимости от значения параметра ldap-encryption-method)

      Нет

      ldap-encryption-method

      Механизм шифрования LDAP-сервера. Возможные значения:

      • ssl — для взаимодействия с LDAP через SSL/TLS;

      • starttls — для STARTTLS;

      • none — не использовать шифрование

      none

      ldap-user-base-dn

      Базовый DN для всех пользователя Guacamole

      Да

      ldap-group-base-dn

      Базовый DN для все пользовательских групп

      Да

      ldap-username-attribute

      Атрибут, который содержит имя пользователя во всех объектах пользователей Guacamole в каталоге LDAP

      Да (sAMAccountName)

      ldap-group-name-attribute

      Атрибут, определяющий уникальные имена групп пользователей в каталоге LDAP

      Да (sAMAccountName)

      ldap-member-attribute-type

      Атрибут, указывающий тип атрибута (заданного в парамтере ldap-member-attribute), который определяет членство пользователя в группе

      Да (dn)

      ldap-member-attribute

      Атрибут, содержащий участников всех групповых объектов в каталоге LDAP

      Да (member)

      ldap-group-search-filter

      Фильтр, который определяет условия поиска для получения всех записей группы из LDAP

      (objectClass=*)

      Да ((objectClass=group))

      ldap-user-search-filter

      Фильтр, который определяет условия поиска для получения всех записей пользователя из LDAP

      Например, чтобы только члены группы CN=RCUsers,CN=Users,DC=windomain1,DC=com имели доступ к УД, задайте значение вида: (&(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=CN=RCUsers,CN=Users,DC=windomain1,DC=com))

      (objectClass=*)

      Да

      ldap-search-bind-dn

      DN пользователя для подключения к LDAP-серверу в формате: CN=RCUser,CN=Users,DC=windomain1,DC=com

      Да

      ldap-search-bind-password

      Пароль пользователя для подключения к LDAP-серверу

      Да

      Аутентификация

      ignore-certs-in-rdp-connections

      Параметр позволяет принудительно отключить (значение true) проверку сертификата сервера при установке соединения по протоколу RDP.

      Если параметр не задан в файле, система будет считать, что установлено значение false

      true

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

      # guacd properties
      guacd-hostname: localhost
      guacd-port: 4822
      
      # PostgreSQL properties
      postgresql-hostname: localhost
      postgresql-database: guacamole_db
      postgresql-username: guacamole_db_user
      postgresql-password: password
      
      # LDAP properties
      ## Common
      ldap-hostname:          ira-server.domain.local
      ldap-encryption-method: ssl
      
      # Base DN
      ldap-user-base-dn:  DC=domain,DC=local
      ldap-group-base-dn: DC=domain,DC=local
      
      # Attributes
      ldap-username-attribute:    sAMAccountName
      ldap-group-name-attribute:  sAMAccountName
      
      ldap-member-attribute-type: dn
      ldap-member-attribute:      member
      
      # Search
      ldap-user-search-filter: (&(objectClass=person)(memberOf:1.2.840.113556.1.4.1941:=CN=arm_admins,CN=Users,DC=domain,DC=local))
      ldap-group-search-filter: (objectClass=group)
      ldap-search-bind-dn:       CN=Administrator,CN=Users,DC=domain,DC=local
      ldap-search-bind-password: Password123
      
      # Authentication
      ignore-certs-in-rdp-connections: true
    6. (Опционально) для настройки шифрования в файле /opt/tomcat/conf/server.xml выполните настройки секций Connector.

      Пример:

      <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"/>
      <Connector port="8083" protocol="org.apache.coyote.http11.Http11AprProtocol"
                 maxThreads="150" SSLEnabled="true" >
          <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
          <SSLHostConfig>
              <Certificate certificateKeyFile="<ssl_certificate_key>"
                           certificateFile="<ssl_certificate>"
                           type="RSA" />
          </SSLHostConfig>
      </Connector>

      Где:

      • ssl_certificate_key — определяет путь к файлу приватного ключа SSL-сертификата;

      • ssl_certificate — указывает SSL-сертификат для обеспечения безопасного соединения.

    7. Перезапустите сервер Tomcat, выполнив команду:

      sudo systemctl restart tomcat
    Установка и конфигурирование компонента inno-ira-guacamole-schema

    Установка выполняется на сервере, с которого схема Guacamole будет устанавливаться в БД PostgreSQL. На этом сервере должен быть установлен клиент psql.

    Шаги выполнения:

    1. Установите пакет inno-ira-guacamole-schema, выполнив команду:

      sudo dnf install ./inno-ira-guacamole-schema-*rpm
    2. Установите схему Guacamole, выполнив команду:

      cat /opt/irc/guacamole-schema/schema/*.sql | psql --host <guacamole_database_host>
      --port <guacamole_database_port> -dbname <guacamole_database_name>
      --username <guacamole_database_user> --password -f -

      Где в параметрах необходимо указать технического пользователя и БД, созданных на этапе подготовки к установке:

      • <guacamole_database_host> — имя хоста БД;

      • <guacamole_database_port> — порт БД;

      • <guacamole_database_name> — имя БД;

      • <guacamole_database_user> — имя пользователя БД.

        При выполнении команды запрашивается пароль пользователя БД.

    3. Введите пароль пользователя БД.

      Будет создана схема Guacamole и пользователь guacadmin c паролем guacadmin.

      При первом запуске приложения Guacamole пароль пользователя guacadmin должен быть изменен администратором.
    Установка на агенте (minion)

    Для настройки удаленного доступа на агенте (minion) по протоколам VNC, RDP, SSH, задайте конфигурацию соответствующей формулы:

    • tigervnc-formula — см. описание в разделе «Формула tigervnc-formula» документа «Руководство по эксплуатации»;

    • xrdp-formula — см. описание в разделе «Формула xrdp-formula» документа «Руководство по эксплуатации»;

    • openssh-formula — см. описание в разделе «Формула openssh-formula» документа «Руководство по эксплуатации».

    Настройка журналирования и аудита

    Компоненты модуля «Удаленный доступ» осуществляют запись событий в два приемника:

    • журнал аудита — события, важные с точки зрения безопасности, например, аутентификация и авторизация пользователей, доступ к защищенным ресурсам (см. документ «Руководство по эксплуатации» раздел «Аудит»);

    • технический журнал — события, содержащие отладочную информацию полезную при анализе работы программы (см. документ «Руководство по эксплуатации» раздел «Журналирование»).

    Для сбора и передачи системных журналов используется служба syslog-ng (System Logging Daemon — Next Generation).

    Файлы логов аудита и журналирования создаются автоматически при установке модуля и хранятся на устройствах, на которых они были сгенерированы, в каталогах:

    Компонент Аудит Журналирование

    Служба доступа по VNC

    /var/log/inno-osmax/audit/tigervnc.log

    /var/log/inno-osmax/tigervnc.log

    WEB-клиент шлюза удаленного доступа

    /var/log/inno-osmax/audit/guacamole_client.log

    /var/log/inno-osmax/guacamole_client.log

    Сервер шлюза удаленного доступа

    /var/log/inno-osmax/audit/guacamole_server.log

    /var/log/inno-osmax/guacamole_server.log

    Служба доступа по SSH

    /var/log/inno-osmax/audit/openssh.log

    /var/log/inno-osmax/openssh.log

    Служба доступа по RDP

    /var/log/inno-osmax/audit/xrdp.log

    /var/log/inno-osmax/xrdp.log

    Настройка фильтрации syslog_ng

    Конфигурационные файлы модуля «Удаленный доступ» расположены в каталоге /usr/share/syslog-ng/include/scl/irc, который включает файл, содержащий общие настройки, и файлы компонентов модуля:

    • irc.conf — общие настройки, содержащий инструкцию (template) с описанием формата сообщения;

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

      template t_irc{
          template("<${PRI}> ${ISODATE} ${HOST} ${PROGRAM} ${PID} ${MESSAGE}\n");
      };
    • irc_guacamole_client.conf — конфигурационный файл WEB-клиента шлюза удаленного доступа;

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

      source s_irc_net {
       tcp(ip(127.0.0.1) port(514));
      };
      
      rewrite r_rewrite_hostname{set("-", value("HOST"));};
      
      destination d_guacamole_clientlog
      {
        file(
              "/var/log/inno-osmax/guacamole_client.log"
              template(t_irc)
              frac-digits(3)
              owner("osmax")
              group("osmax")
              perm(0640)
            );
      };
      
      filter f_guacamole_clientlog
      {
        program(guacamole_client) and message("IRC:") and not facility(local7);
      };
      
      log
      {
        source(s_irc_net);
        filter(f_guacamole_clientlog);
        rewrite(r_rewrite_hostname);
        destination(d_guacamole_clientlog);
        flags(final);
      };
      
      destination d_guacamole_clientaudit
      {
        file(
              "/var/log/inno-osmax/audit/guacamole_client.log"
              template(t_irc)
              frac-digits(3)
              owner("osmax")
              group("osmax")
              perm(0640)
            );
      };
      
      filter f_guacamole_clientaudit
      {
        program(guacamole_client) and facility(local7) and message("IRC:");
      };
      
      log
      {
        source(s_irc_net);
        filter(f_guacamole_clientaudit);
        rewrite(r_rewrite_hostname);
        destination(d_guacamole_clientaudit);
        flags(final);
      };
    • irc_guacamole_server.conf — конфигурационный файл сервера шлюза удаленного доступа;

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

      destination d_guaclog
      {
          file(
                  "/var/log/inno-osmax/guacamole_server.log"
                  template(t_irc)
                  frac-digits(3)
                  owner("osmax")
                  group("osmax")
                  perm(0640)
              );
      };
      
      filter f_guaclog
      {
              program(guacd) and message("IRC:") and not facility(local7);
      };
      
      log
      {
              source(s_sys);
              filter(f_guaclog);
              destination(d_guaclog);
              flags(final);
      };
      
      destination d_guacaudit
      {
              file(
                      "/var/log/inno-osmax/audit/guacamole_server.log"
                      template(t_irc)
                      frac-digits(3)
                      owner("osmax")
                      group("osmax")
                      perm(0640)
                  );
      };
      
      filter f_guacaudit
      {
              program(guacd) and message("IRC:") and facility(local7);
      };
      
      log
      {
              source(s_sys);
              filter(f_guacaudit);
              destination(d_guacaudit);
              flags(final);
      };
    • irc_tigervnc.conf — конфигурационный файл службы доступа по VNC;

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

      destination d_tigervnclog
      {
          file(
                  "/var/log/inno-osmax/tigervnc.log"
                  template(t_irc)
                  frac-digits(3)
                  perm(0640)
              );
      };
      
      filter f_tigervnclog
      {
          program(x0vncserver) and message("IRC:") and not facility(local7);
      };
      
      log
      {
          source(s_sys);
          filter(f_tigervnclog);
          destination(d_tigervnclog);
          flags(final);
      };
      
      destination d_tigervncaudit
      {
          file(
                  "/var/log/inno-osmax/audit/tigervnc.log"
                  template(t_irc)
                  frac-digits(3)
                  perm(0640)
              );
      };
      
      filter f_tigervncaudit
      {
          program(x0vncserver) and message("IRC:") and facility(local7);
      };
      
      log
      {
          source(s_sys);
          filter(f_tigervncaudit);
          destination(d_tigervncaudit);
          flags(final);
      };
    • irc_openssh.conf — конфигурационный файл службы доступа по SSH;

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

      destination d_opensshlog
      {
          file("/var/log/inno-osmax/openssh.log"
          template(t_irc)
          frac-digits(3));
      };
      
      filter f_opensshlog
      {
          program(openssh) and match("IRC:") and not facility(local7);
      };
      
      log
      {
          source(s_sys);
          filter(f_opensshlog);
          destination(d_opensshlog);
          flags(final);
      };
      
      destination d_opensshaudit
      {
          file("/var/log/inno-osmax/audit/openssh.log"
          template(t_irc)
          frac-digits(3));
      };
      
      filter f_opensshaudit
      {
          program(openssh) and match("IRC:") and facility(local7);
      };
      
      log
      {
          source(s_sys);
          filter(f_opensshaudit);
          destination(d_opensshaudit);
          flags(final);
      };
    • irc_xrdp.conf — конфигурационный файл службы доступа по RDP;

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

      destination d_xrdplog
      {
          file(
              "/var/log/inno-osmax/xrdp.log"
              template(t_irc)
              frac-digits(3)
          );
      };
      
      filter f_xrdplog
      {
          program(xrdp) and not (program(xrdp-sesman)) and match("IRC:") and not facility(local7);
      };
      
      log
      {
          source(s_sys);
          filter(f_xrdplog);
          destination(d_xrdplog);
          flags(final);
      };
      
      destination d_xrdpaudit
      {
          file(
              "/var/log/inno-osmax/audit/xrdp.log"
              template(t_irc)
              frac-digits(3));
          };
      
      filter f_xrdpaudit {
          program(xrdp) and not (program(xrdp-sesman)) and match("IRC:") and facility(local7);
      };
      
      log
      {
          source(s_sys);
          filter(f_xrdpaudit);
          destination(d_xrdpaudit);
          flags(final);
      };
    • irc_xrdp_sesman.conf — конфигурационный файл компонента xrdp-sesman.

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

      destination d_xrdp_sesman_log
      {
          file(
              "/var/log/inno-osmax/xrdp-sesman.log"
              template(t_irc)
              frac-digits(3)
          );
      };
      
      filter f_xrdp_sesman_log
      {
          program(xrdp-sesman) and match("IRC:") and not facility(local7);
      };
      
      log
      {
          source(s_sys);
          filter(f_xrdp_sesman_log);
          destination(d_xrdp_sesman_log);
          flags(final);
      };
      
      destination d_xrdp_sesman_audit
      {
          file(
              "/var/log/inno-osmax/audit/xrdp-sesman.log"
              template(t_irc)
              frac-digits(3));
          };
      
      filter f_xrdp_sesman_audit {
          program(xrdp-sesman) and match("IRC:") and facility(local7);
      };
      
      log
      {
          source(s_sys);
          filter(f_xrdp_sesman_audit);
          destination(d_xrdp_sesman_audit);
          flags(final);
      };
    Настройка ротации и архивирования

    Для настройки ротации и архивирования используется служба logrotate, которая обеспечивает автоматическую ротацию, сжатие, удаление и отправку лог-файлов по почте. Обычно служба logrotate запускается как ежедневное задание cron. В зависимости от настроек каждый лог-файл может обрабатываться ежедневно, еженедельно, ежемесячно или при достижении определенного размера.

    Настройки задаются в конфигурационных файлах, которые создаются автоматически при установке модуля в каталоге /etc/logrotate.d/ и включают параметры:

    • /app/inno-osmax/logs/<компонент>/<имя лог-файла> — путь до лог-файла;

    • rotate 36 — лог-файл проходит 36 регулярных ротаций перед удалением;

    • maxsize=10M — максимальный размера файла: 10MB;

    • copytruncate — удаление записей из оперативного файла выполняется после создания копии лог-файла;

    • compress — выполнение сжатия лог-файла после ротации;

    • monthly — период ротации лог-файла (один раз в месяц);

    • missingok — если лог-файл отсутствует, выполняется переход к следующему файлу без вывода сообщения об ошибке;

    • notifempty — если лог-файл пустой, ротация не выполняется.

    Примеры:

    • конфигурационные файлы шлюза удаленный доступ:

      • /etc/logrotate.d/irc.conf;

        /var/log/inno-osmax/audit/guacamole_server.log
        /var/log/inno-osmax/guacamole_server.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }
      • /etc/logrotate.d/irc_guacamole_client.conf;

        /var/log/inno-osmax/audit/guacamole_client.log
        /var/log/inno-osmax/guacamole_client.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }
    • конфигурационные файлы устройств:

      • /etc/logrotate.d/irc.conf;

        /var/log/inno-osmax/audit/tigervnc.log
        /var/log/inno-osmax/tigervnc.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }
      • /etc/logrotate.d/irc_openssh.conf;

        /var/log/inno-osmax/audit/openssh.log
        /var/log/inno-osmax/openssh.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }
      • /etc/logrotate.d/irc_xrdp.conf;

        /var/log/inno-osmax/audit/xrdp.log
        /var/log/inno-osmax/xrdp.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }
      • /etc/logrotate.d/irc_xrdp_sesman.conf.

        /var/log/inno-osmax/audit/xrdp-sesman.log
        /var/log/inno-osmax/xrdp-sesman.log {
            rotate 36
            maxsize=10M
            copytruncate
            compress
            dateext
            monthly
            missingok
            notifempty
        }

    Глоссарий

    Certificate Revocation List (CRL)

    Список отозванных сертификатов. Список сертификатов, которые удостоверяющий центр (Certificate Authority — CA) пометил как отозванные. Используется для проверки действительности сертификата. CRL содержит информацию о сертификатах, которые больше не должны использоваться, например, если они были скомпрометированы или утеряны.

    Cron-формат

    Формат времени, используемый в системах планирования задач в операционных системах Unix и Linux. Этот формат представляет собой строку, которая содержит шесть или семь полей, разделенных пробелами или табуляцией. В каждом поле задано значение времени или даты, когда задача должна быть выполнена. Поля могут содержать любые разрешенные значения, а также различные комбинации разрешенных специальных символов для этого поля.

    Deb-пакет (Debian package)

    Формат упаковки программного обеспечения для операционной системы Debian и ее производных, таких как Ubuntu. Deb-пакет содержит программу или библиотеку, а также информацию о зависимостях и конфигурации. Он может быть установлен с помощью менеджера пакетов, например, apt-get или dpkg. Deb-пакеты облегчают установку и обновление программного обеспечения в системе, а также позволяют управлять зависимостями между пакетами.

    Java Naming and Directory Interface (JNDI)

    Интерфейс в языке Java, который позволяет приложениям обращаться к различным сервисам и ресурсам через их имена. Используется для доступа к данным и объектам через различные протоколы, такие как LDAP (Lightweight Directory Access Protocol), файловые системы, JDBC и другие.

    PKCS#12

    Один из стандартов семейства Public-Key Cryptography Standards (PKCS), опубликованных RSA Laboratories.

    Privacy Enhanced Mail (PEM)

    Формат кодирования данных, который используется для хранения и передачи сертификатов, закрытых ключей, а также других конфиденциальных данных в виде текста. Формат PEM был разработан для безопасной передачи электронной почты, но сейчас широко используется в SSL/TLS-сертификатах и других системах безопасности.

    Role Based Access Control (RBAC)

    Управление доступом на основе ролей.

    Service Principal Name (SPN)

    Уникальное имя для аутентификации службы в рамках протокола Kerberos.

    Агент (в терминологии SaltStack: Minion)

    Служебный узел, который управляется с помощью модуля координации. Он может являться физической или виртуальной машиной, контейнером или сетевым устройством. Агент подключается к серверу управления и получает от него команды для выполнения различных задач, таких как установка программного обеспечения, настройка конфигурации или мониторинг состояния системы. Агенту присваивается свой уникальный идентификатор, который используется для идентификации узла на сервере управления.

    Версия конфигурации

    Сущность продукта, которая представляет собой отдельный файл в формате JSON. Файл загружается в модуль «Кабинет администратора» и позволяет изменять конфигурацию в соответствии с требованиями пользователя. В файле указывается идентификатор версии, мета-атрибуты версии и параметры формулы, доступные для переопределения.

    Кабинет администратора

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

    Коллекция устройств

    Сущность продукта, которая представляет собой список устройств, сформированный в результате фильтрации всех устройств по атрибутам самих устройств и атрибутам пользователей, ассоциированных с ними. Существуют статические и динамические коллекции. Список устройств в статических коллекциях обновляется только при создании коллекции или администратором вручную. Список устройств в динамических коллекциях обновляется автоматически по заданному расписанию, а также администратором при создании и редактировании.

    Конфигурация

    Сущность продукта, которая представляет собой отдельный файл в формате JSON, содержащий описание набора метаданных для формулы SaltStack. Файл загружается в модуль «Кабинет администратора», и, используя формулу, обеспечивает выполнение установки и настройки системы в соответствии с требованиями пользователя.

    Магазин приложений

    Графический интерфейс, посредством которого сотрудники организации могут выполнять автоматизированную установку, удаление и обновление ПО на своих устройствах.

    Сервер управления (в терминологии SaltStack: Master)

    Центральный узел в инфраструктуре управления конфигурацией. Управляет всеми устройствами в инфраструктуре — агентами, отправляет команды на выполнение, хранит конфигурационные данные и предоставляет отчеты о выполнении задач. Также обеспечивает безопасную и защищенную связь между устройствами и сервером управления.

    Формула

    Сущность SaltStack, представляющая собой директорию с файлами состояний (файлы с расширением .sls) в формате YAML. Файлы состояний определяют поведение и конечное состояние системы, которого она должна достичь после применения формулы, и используются для установки, настройки и управления программным обеспечением, настройки сетевых параметров, создания пользователей и др. Виды формул:

    • готовые — загруженные на сервер готовые к использованию формулы с настройками по умолчанию; при необходимости могут быть переопределены пользователем;

    • пользовательские — готовые формулы, для корректной работы которых необходимо создать пользовательскую конфигурацию;

    • формулы-шаблоны — формулы, которые используются в качестве примера для создания собственных формул подобного типа.

    Сокращения

    AD

    Active Directory

    CRL

    Certificate Revocation List

    JNDI

    Java Naming and Directory Interface

    RBAC

    Role Based Access Control

    SPN

    Service Principal Name

    ОС

    Операционная система

    ПО

    Программное обеспечение