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

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

Версия 1.5.0

Содержание

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

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

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

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

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

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

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

    4. (Опционально) создайте файл сертификата SSL для синхронизации пользователей по протоколу LDAPS.

    5. (Опционально) создайте Service Principal Name (SPN) и keytab-файл для сервисной учетной записи.

    6. (Опционально) Если вы используете сторонний Java Runtime Environment (JRE), ознакомьтесь с дополнительной инструкцией по запуску бэкенда продукта.

      Дистрибутив Java включен по умолчанию в устанавливаемый deb-пакет бэкендом продукта «Служба управления конфигурациями "Осмакс"».

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

    Компоненты продукта устанавливаются в операционной системе Astra Linux Special Edition версии не ниже 1.7.3 (лицензия: GNU General Public License от ООО «РусБИТехАстра»).

    Допускается использование других систем, основанных на ядре Linux (например, система с открытым исходным кодом Ubuntu версии 20.04 LTS и выше).

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

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

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

    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) для передачи данных с серверов управления в бэкенд продукта.

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

    • 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. Создайте техническую учетную запись пользователя.

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

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

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

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

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

    2. Создайте бакеты:

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

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

      • icons-bucket — для хранения иконок;

      • images-bucket — для хранения изображений и скриншотов;

      • others-bucket — для хранения прочего мультимедиа-контента.

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

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

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

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

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

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

    • 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) серверами управления и позволяет связывать их в единую сеть и управлять ими из одного места;

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

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

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

    Дистрибутив распространяется следующими способами:

    • в виде deb-пакетов, доступных для установки из apt-репозитория:

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

      Перед установкой требуется добавить apt-репозиторий в список репозиториев операционной системы и обеспечить к нему доступ, используя полученные от ГК «Иннотех» публичный ключ и учетную запись пользователя.

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

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

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

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

    <package_name>_<build_version>-<edition>_<architecture>.deb

    Где:

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

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

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

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

    Пример:

    inno-lcm-core_1.2.0-1_amd64.deb

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

    <package_name>_<build_version>_<architecture>.deb

    Где:

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

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

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

    Пример:

    salt-api_3006.5_amd64.deb

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

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

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

    Получение сертификата SSL для синхронизации пользователей по протоколу LDAPS

    1. Для извлечения сертификата LDAP-сервера выполните команду в консоли:

      openssl s_client -showcerts -connect <active_directory_domain_controller_address>:<ldap_ssl_port>

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

      openssl s_client -showcerts -connect 10.169.20.3:636

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

      Connecting to 172.28.15.144
      CONNECTED(00000004)
      Can't use SSL_get_servername
      depth=0 O=Samba Administration, OU=Samba - temporary autogenerated HOST certificate, CN=DEV-LCM-VM0106.lcm.terra.inno.tech
      verify error:num=20:unable to get local issuer certificate
      verify return:1
      depth=0 O=Samba Administration, OU=Samba - temporary autogenerated HOST certificate, CN=DEV-LCM-VM0106.lcm.terra.inno.tech
      verify error:num=21:unable to verify the first certificate
      verify return:1
      depth=0 O=Samba Administration, OU=Samba - temporary autogenerated HOST certificate, CN=DEV-LCM-VM0106.lcm.terra.inno.tech
      verify return:1
      ---
      Certificate chain
       0 s:O=Samba Administration, OU=Samba - temporary autogenerated HOST certificate, CN=DEV-LCM-VM0106.lcm.terra.inno.tech
         i:O=Samba Administration, OU=Samba - temporary autogenerated CA certificate, CN=DEV-LCM-VM0106.lcm.terra.inno.tech
         a:PKEY: rsaEncryption, 4096 (bit); sigalg: RSA-SHA256
         v:NotBefore: Oct 19 14:59:09 2023 GMT; NotAfter: Sep 18 14:59:09 2025 GMT
      -----BEGIN CERTIFICATE-----
      MIIF0DCCA7igAwIBAgIEPUQxZTANBgkqhkiG9w0BAQsFADCBhTEdMBsGA1UEChMU
      U2FtYmEgQWRtaW5pc3RyYXRpb24xNzA1BgNVBAsTLlNhbWJhIC0gdGVtcG9yYXJ5
      IGF1dG9nZW5lcmF0ZWQgQ0EgY2VydGlmaWNhdGUxKzApBgNVBAMTIkRFVi1MQ00t
      Vk0wMTA2LmxjbS50ZXJyYS5pbm5vLnRlY2gwHhcNMjMxMDE5MTQ1OTA5WhcNMjUw
      OTE4MTQ1OTA5WjCBhzEdMBsGA1UEChMUU2FtYmEgQWRtaW5pc3RyYXRpb24xOTA3
      BgNVBAsTMFNhbWJhIC0gdGVtcG9yYXJ5IGF1dG9nZW5lcmF0ZWQgSE9TVCBjZXJ0
      aWZpY2F0ZTErMCkGA1UEAxMiREVWLUxDTS1WTTAxMDYubGNtLnRlcnJhLmlubm8u
      dGVjaDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANnnfyyW1P1I80Cw
      t/TVWTZTRXIHKNPECGz3flV7XzxECUwMN/TZoft3uucukWs6jsa53REmIsjIgUrQ
      3FiQn4lo/fzuC5gbwF9RE7jA3OcankaDjL5exB8FHtVUFy0hjAKulsZ1L1bO2Z49
      2SAZpK64B9IOI092rV2DyiBkkVh3xCRHUpm97Buzvt8ERQsDEGWx8lYJl66F/Zi4
      2QnIlMn1D7Q1VVp5OggqPaua3il9s3q7uoS6hXuin/AD6i3ddT3tHeBP/L/j3bdr
      oesfQl5xd15d0xCdUqMteyMpa+aMj1Sln32hpaM4U4Q8sIn4cLOd+8ZjRclyZyFe
      wRyV4Ox9WKfOlwh+vRNE28zNbhU0ljJM4qIj8mXTAewHCI6xLQEYFjy1GJf7KS6C
      o2Ub5+FwnZ72tXvB99STgvhyD6JhoSThy0OHjqx5Z9HK6Pjx+QPlkk4JEO/KRl0s
      zneehA06XdUUQc2G/Cn5wVMdZpfo3OXiePsEKZKg2AA979TvsqqqCWAbNG4RbXyK
      riCtFyJqqwEiUEOeYr0y65AHV/jD1NlPIYGUzXlFhBnFJlLOoXN04J58p4UbTcdd
      mBBHPmGk69W6Oxf5oF7HJsfZrxHVe8j4lpNH/Ybh54g9otoqpxP157H26dqcRvZM
      mxXDJtg4AoWsoGQXM1ej4S7kwJclAgMBAAGjRDBCMAwGA1UdEwEB/wQCMAAwEwYD
      VR0lBAwwCgYIKwYBBQUHAwEwHQYDVR0OBBYEFOP4eYlKWA77ur5P4ys0xE57aRGj
      MA0GCSqGSIb3DQEBCwUAA4ICAQCHDPbmgIpfqXoKh0x3FtNt6EecJvdLtRPHrBO+
      MHXL9o7SZyqtbXs4mhsoMbP8GGGcJtem02ELZosWLr1/2cg0d9uQuhpB5zLwrTiV
      E7u7ZVADXJc75gMxulBPHDLaUT8AdP0GEVt6W6dw1xQULT1CGI9728vsZ+q9VetK
      3qgtx/lAB16wJKhm0LMxS9FAR2iOfHgnVYHqKMQKkNUecV95imo10G44P6sj4wSt
      L7lB+Za2EA//7OdGvQYeCQCSbpQQbNPV0g1LHXJ/eO5y1EEIRm4gtsTyipg/52fC
      VRTmGw5jZUEzUZBCUY/A4XiyoczqfuO+tGT0rLBZVmP7EC7/KJt3EKnu1CQgkv8w
      gPkgYNX6+2zuOCUirXY8QqciQqD44SSyS2+LNk5qfftoxcNZ5yBiOiJDZ9KayW+F
      t0OwfgTAvGBoBDQ5Gkop1sAEXFEoEhRO8ktOFLjnG6vxEPc35Wj3qX9K3Tye03ue
      hbxv5qrzs5STOF1fqbTuckuP+91ysuNbKvivlB1nlXBXgycoqYRF6/uU/sK1Xesb
      YJ8oYR+7edrYyRpz1WECR9MAS9iH49RfaEVO+8pSxuGwUMtaiKA4BQo02aGLMKDW
      hFtNhfVEmARoKPkuqdIoxjWL9bltPal6mr1ku2P5TwIyQIWHfI1C+mqnxlh2Z78Z
      MDjQmQ==
      -----END CERTIFICATE-----
    2. Скопируйте сертификат из вывода команды и создайте файл с сертификатом.

    3. Сохраните файл с сертификатом на сервере, на который будет устанавливаться бэкенд продукта. Путь к файлу необходимо будет указать на этапе его настройки.

    Создание Service Principal Name (SPN) и keytab-файла для сервисной учетной записи

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

    • имена хостов отдельно для каждого из модулей; например:

      • «Кабинет администратора» — web-admin.example.com;

      • «Магазин приложений» — app-shop.example.com;

    • имя домена; например: LCM.TERRA.INNO.TECH;

    • имя сервисной учетной записи; например: lcm_backend_svc.

    При создании Service Principal Name (SPN) и keytab-файла модулей «Кабинет администратора» и «Магазин приложений» используется единый принцип.

    Ниже приведен пример создания SPN (Service Principal Name) и keytab-файла модуля «Кабинет администратора» для сервисной учетной записи в домене под управлением Samba.

    Создание Service Principal Name (SPN)

    1. Создайте SPN с полным доменным именем, выполнив команду:

      samba-tool spn add HTTP/<host-name>@<domain-name> <service-account>

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

      samba-tool spn add HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH lcm_backend_svc
    2. Создайте SPN с коротким именем, выполнив команду:

      $ samba-tool spn add HTTP/<host-name> <service-account>

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

      $ samba-tool spn add HTTP/web-admin.example.com lcm_backend_svc
    3. Выполните проверку созданных SPN, выполнив команду:

      $ samba-tool spn list <service-account>

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

      $ samba-tool spn list lcm_backend_svc

      Пример вывода:

      User CN=lcm_backend_svc,CN=Users,DC=lcm,DC=terra,DC=inno,DC=tech has the following servicePrincipalName:
      HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH
      HTTP/web-admin.example.com
    4. Выполните проверку атрибутов сервисной учетной записи, выполнив команду:

      $ samba-tool user show <service-account>

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

      $ samba-tool user show lcm_backend_svc

      Пример вывода со значимыми параметрами:

      cn: lcm_backend_svc
      name: lcm_backend_svc
      sAMAccountName: lcm_backend_svc
      userPrincipalName: lcm_backend_svc@lcm.terra.inno.tech
      objectCategory: CN=Person,CN=Schema,CN=Configuration,DC=lcm,DC=terra,DC=inno,DC=tech
      msDS-SupportedEncryptionTypes: 24
      accountExpires: 0
      servicePrincipalName: HTTP/web-admin.example.com@LCM.TERRA.INNO.TECH
      servicePrincipalName: HTTP/web-admin.example.com
      distinguishedName: CN=lcm_backend_svc,CN=Users,DC=lcm,DC=terra,DC=inno,DC=tech

    Создание keytab-файла

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

    $ sudo samba-tool domain exportkeytab ./lcm-user.keytab --principal=<service-account>

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

    $ sudo samba-tool domain exportkeytab ./lcm-user.keytab --principal=lcm_backend_svc

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

    $ sudo klist -e -k ./lcm-user.keytab

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

    Keytab name: FILE:./lcm-user.keytab
    KVNO Principal
    ---- --------------------------------------------------------------------------
    7 web-admin.example.com@LCM.TERRA.INNO.TECH (aes256-cts-hmac-sha1-96)
    7 web-admin.example.com@LCM.TERRA.INNO.TECH (aes128-cts-hmac-sha1-96)
    7 web-admin.example.com@LCM.TERRA.INNO.TECH(DEPRECATED:arcfour-hmac)
    Сохраните файл на сервере, на который будет устанавливаться бэкенд продукта. Путь к файлу необходимо будет указать на этапе его настройки.

    Использование стороннего Java Runtime Environment (JRE)

    По умолчанию в устанавливаемый deb-пакет с модулем inno-lcm-core (бэкендом продукта «Служба управления конфигурациями "Осмакс"») уже включен Java Runtime Environment (JRE).

    При установке и запуске модуля inno-lcm-core из deb-пакета автоматически происходит создание службы lcm.service и запуск бэкенда через встроенный JRE. В данном случае не требуется предпринимать дополнительные действия.

    Версия Java должна быть не ниже 17.

    Для запуска модуля inno-lcm-core через стороний JRE, выполните действия:

    1. Установите на сервер, на котором будет производиться запуск, JRE не ниже версии 17.

      Убедитесь, что переменная JAVA_HOME содержит путь к актуальной JRE не ниже версии 17.
    2. Загрузите и распакуйте архив *.tar.gz с deb-пакетом inno-lcm-core.

    3. Перенесите deb-пакет в требуемую директорию, например, выполнив команду:

      dpkg-deb -R inno-lcm.core-<version>.deb inno-lcm-core /opt/inno-lcm-core
    4. Перейдите в директорию с исполняемыми файлами *.jar модуля inno-lcm-core:

      cd /opt/inno-lcm-core/lib/app
    5. Запустите исполняемый файл lcm-app-runner.jar удобным способом, например, выполнив команду:

      java -Dquarkus.config.locations=/opt/inno-lcm-core/application.properties -jar lcm-app-runner.jar

    Установка

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

    • архив с основными модулями (бэкенд и фронтенд) продута;

      Пример архива:

      inno-lcm-all-1.3.0.tar.gz
    • архив с модулем координации (SaltStack).

      Пример архива:

      salt_3006.5.zip

    Для доступа к хранилищу с архивами требуются:

    • ссылка на хранилище с архивами в формате:

      https://<repository.domain.name>/repository/<клиент>-<редакция>-raw-packages
    • учетная запись для доступа к хранилищу.

    Установка продукта выполняется в два этапа:

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

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

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

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

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

    2. Установите deb-пакеты salt-common, salt-api и salt-master.

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

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

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

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

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

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

    9. Установите deb-пакеты salt-common и salt-minion.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Установка deb-пакетов salt-common, salt-master и salt-api

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Включение модуля salt-api

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

    1. (Опционально) установите SSL-сертификаты.

      Подробную информацию об установке SSL-сертификатов см. в официальной документации.
    2. 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.

    Настройка подключения к 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-совместимое хранилище
    Готовые формулы (подробнее см. раздел «Готовые формулы» документа «Руководство по эксплуатации») импортируются автоматически при установке продукта.

    Чтобы загрузить пользовательские формулы (см. раздел «Пользовательские формулы» документа «Руководство по эксплуатации») и формулы-шаблоны (см. раздел «Формулы-шаблоны» документа «Руководство по эксплуатации»), используйте 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".

    Настройка 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. Скачайте архив с пакетами требуемых версий и соответствующие файлы контрольных сумм из предоставленного хранилища любым доступным способом.

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

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

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

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

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

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

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

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

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

    Установка deb-пакетов salt-common и salt-minion

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

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

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

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

    sudo apt install ./inno-salt/salt-common_3006.5_amd64.deb
    sudo apt install ./inno-salt/salt-minion_3006.5_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-запрос на сервер управления. Рекомендуемое значение — 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) см. в официальной документации.
    5. (Опционально) создайте файл конфигурации агента (minion) /etc/salt/minion.d/log_level.conf и задайте в нем параметр log_level, чтобы включить подробный уровень логирования.

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

      log_level: debug

    Создание пар открытых ключей (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. Выполните настройку бэкенда.

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

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

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

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

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

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

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

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

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

      mkdir inno-lcm
      tar xvf inno-lcm-all-1.3.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.3.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

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

    Вы можете выполнить установку бэкенда как на отдельном сервере, так и на сервере вместе с фронтендом продукта. Для этого установите пакет inno-lcm-core, выполнив команду:

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

    Пример:

    sudo apt install ./inno-lcm-core_1.3.0-1_amd64.deb
    Проверка установки

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

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

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

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

    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 будет содержать иное значение. В этом случае проверьте логи системы (см. раздел «Рекомендации по сбору и предоставлению информации о проблеме/ошибке» документа «Руководство по эксплуатации»).

    Конфигурация бэкенда

    Конфигурация бэкенда выполняется в файле 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
    
    ## Main application port
    quarkus.http.port=8081
    
    ## Kerberos auth
    ## Enable/disable kerberos authentication
    quarkus.kerberos.enabled=true
    ## 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-password=Password123
    quarkus.kerberos.service-principal-realm=my.domain.com
    ## Path to keytab:
    #quarkus.kerberos.keytab-path=/opt/inno-lcm-core/my_file.keytab
    
    ## 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
    
    ## LDAP synchronization params
    lcm.inventory.ldap.search-page-size=500
    ## 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
    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
    ## There are 3 options of SSL for LDAP datasource.
    ## value `false` - disable LDAP over SSL (LDAPS)
    ## value `trust_all` - enable LDAPS, allow any SSL certificate without validation
    ## value `true` - enable LDAPS, required path to the certificate file
    lcm.inventory.ldap.datasource[0].ssl=true
    lcm.inventory.ldap.datasource[0].ssl-certificate=/opt/inno-lcm-core/samba_cert.pem
    ## 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 other LDAP datasource configuration 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].host=192.168.0.1
    #lcm.inventory.ldap.datasource[1]...
    
    ## Device agent settings section
    ## The number of minutes since the last agent activity before the device enters the "Offline" status.
    lcm.inventory.settings.agent.minutes-to-become-offline=5
    ## Path to the file on the server with the Salt agent, which stores information about user sessions
    lcm.inventory.settings.agent.user-session-file-path=/var/log/wtmp
    ## Path to the file on the server with the Salt agent, which stores the information about active user session
    lcm.inventory.settings.agent.active-user-session-file-path=/var/run/utmp
    
    ## Salt kafka connection parameters
    mp.messaging.incoming.salt-events-kafka.bootstrap.servers=http://localhost:9092
    mp.messaging.incoming.salt-events-kafka.topic=salt-topic
    
    ## Kafka SSL connection parameters section. These parameters are optional and are used only for SSL connection mode
    #mp.messaging.incoming.salt-events-kafka.ssl.protocol=SSL
    #mp.messaging.incoming.salt-events-kafka.ssl.keystore.location=/opt/inno-lcm-core/keystore.jks
    #mp.messaging.incoming.salt-events-kafka.ssl.keystore.password=keystore@12345
    #mp.messaging.incoming.salt-events-kafka.ssl.truststore.location=/opt/inno-lcm-core/truststore.jks
    #mp.messaging.incoming.salt-events-kafka.ssl.truststore.password=truststore@12345
    
    ## Salt connection parameters
    lcm.salt-adapter.rest-client.password=salt123
    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=salt123
    
    ## 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
    
    ## Salt pillar synchronization configuration, quartz cron scheduler format
    lcm.inventory.job.sync-collection-pillars.cron.expr=0/10 * * ? * * *
    
    ## S3 Salt configuration
    lcm.salt-adapter.s3.server-uri=http://localhost:9000
    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.state-bucket-name=salt-bucket
    lcm.salt-adapter.s3.pillar-bucket-name=pillar-bucket
    
    ## S3 multimedia content service configuration
    lcm.multimedia.s3.server-uri=http://localhost:9000
    lcm.multimedia.s3.access-key-id=s3adminMultimedia
    lcm.multimedia.s3.secret-access-key=s3adminMultimediaPassword
    lcm.multimedia.s3.region=ru-location-1
    lcm.multimedia.s3.icons-bucket-name=multimedia-bucket
    lcm.multimedia.s3.images-bucket-name=multimedia-bucket
    lcm.multimedia.s3.others-bucket-name=multimedia-bucket
    
    ## Application log configuration
    quarkus.log.file.enable=true
    quarkus.log.file.path=application.log
    quarkus.log.file.rotation.max-backup-index=5
    quarkus.log.file.rotation.max-file-size=10M

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

    Основной порт подключения
    Наименование Описание Значение по умолчанию Пример значения

    quarkus.http.port

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

    8081

    8081

    Параметры настройки аутентификации Kerberos
    Наименование Описание Значение по умолчанию Пример значения

    quarkus.kerberos.enabled

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

    true

    true

    quarkus.kerberos.debug

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

    true

    true

    quarkus.kerberos.service-principal-name

    Имя принципала для аутентификации Kerberos

    lcm_backend_svc

    lcm_backend_svc

    quarkus.kerberos.service-principal-password

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

    Password123

    Password123

    quarkus.kerberos.service-principal-realm

    Наименование области безопасности (realm) принципала

    my.domain.com

    LCM.TERRA.INNO.TECH

    quarkus.kerberos.keytab-path

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

    my_file.keytab

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

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

    quarkus.datasource."lcm-db".username

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

    lcm

    lcmadmin

    quarkus.datasource."lcm-db".password

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

    password

    qwerty123

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

    Адрес подключения серверной части продукта к БД. Формат: postgresql://{db_host}:{db_port}/{db_name}

    postgresql://localhost:5432/lcm

    postgresql://10.6.32.156:5432/lcm

    При необходимости указать схему, значение параметра будет: postgresql://10.6.32.156:5432/lcm?search_path=lcm_schema

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

    Адрес подключения к БД. Параметр используется утилитой Liquibase для актуализации схемы БД. Формат: 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

    Адрес подключения серверной части продукта к БД. Формат: postgresql://{db_host}:{db_port}/{db_name}

    postgresql://localhost:5432/lcm

    postgresql://localhost:5432/lcm

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

    Адрес подключения к БД. Формат: jdbc:postgresql://{db_host}:{db_port}/{db_name}

    jdbc:postgresql://localhost:5432/lcm

    jdbc:postgresql://10.6.32.156:5432/lcm

    Параметры настройки интеграции c 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;

    • lcm.inventory.ldap.datasource[1].username=username2@domain2_name;

    • lcm.inventory.ldap.datasource[1].ssl=false;

    • lcm.inventory.ldap.datasource[1].base-dn=DC=domain_name2,DC=local.

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

    lcm.inventory.ldap.search-page-size

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

    500

    500

    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].host

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

    localhost

    10.6.32.204

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

    Порт для соединения по протоколу LDAP. Опциональный параметр

    636

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

    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

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

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

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

    • false — соответствует выключенному протоколу LDAPS, используется обычный LDAP;

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

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

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

    true

    true

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

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

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

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

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

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

    10000

    10000

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

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

    10000

    10000

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

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

    true

    true

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

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

    true

    true

    Параметры настройки сбора данных с устройств
    Наименование Описание Значение по умолчанию Пример значения

    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

    Параметры настройки интеграции с Apache Kafka
    Наименование Описание Значение по умолчанию Пример значения

    mp.messaging.incoming.salt-events-kafka.bootstrap.servers

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

    http://localhost:9092

    http://10.6.32.156:9092

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

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

    salt-topic

    salt-topic

    Параметры настройки интеграции с API SaltStack
    Наименование Описание Значение по умолчанию Пример значения

    lcm.salt-adapter.rest-client.password

    Пароль, который используется при выполнении запросов к REST API SaltStack

    salt123

    salt123

    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.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-master1

    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.1:8000

    http://192.168.0.2:8000

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

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

    0/10 * * ? * * *

    0 0/15 * ? * * *

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

    lcm.salt-adapter.s3.server-uri

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

    http://localhost:9000

    http://10.6.32.156:9000

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

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

    s3adminSalt

    minioadmin

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

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

    s3adminSaltPassword

    minioadmin123

    lcm.salt-adapter.s3.region

    Название региона S3

    ru-location-1

    ru-location-1

    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.multimedia.s3.server-uri

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

    http://localhost:9000

    http://10.6.32.156:9000

    lcm.multimedia.s3.region

    Название региона S3 для хранилища мультимедиа-контента

    ru-location-1

    ru-location-1

    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.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

    Параметры настройки логирования
    Наименование Описание Значение по умолчанию Пример значения

    quarkus.log.file.enable

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

    true

    true

    quarkus.log.file.path

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

    qapplication.log

    application.log

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

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

    5

    5

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

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

    10М

    10М

    quarkus.log.level

    (Опциональный параметр) настройка уровня логирования. Возможные значения:

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

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

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

    • INFO — информационное сообщение о ходе работы программы, которое может быть полезно для мониторинга и отладки;

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

    • TRACE — самый низкий уровень важности, предоставляющий еще более детальную информацию о ходе выполнения программы. Обычно используется для отслеживания каждого шага алгоритма или функции.

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

    quarkus.log.category.<"system module">

    Пример:

    quarkus.log.category."tech.inno.lcm.salt.events".level=DEBUG
    quarkus.log.category."tech.inno.lcm.inventory.hardware.users.UsersSynchronizer".level=TRACE
    quarkus.log.category."tech.inno.lcm.inventory.hardware.ldap.LdapAdapter".level=INFO

    INFO

    INFO

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

    mp.messaging.incoming.salt-events-kafka.ssl.protocol

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

    SSL

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

    Путь к файлу хранилища ключей (keystore), который содержит закрытые ключи и сертификаты клиента

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

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

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

    keystore@12345

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

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

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

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

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

    truststore@12345

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

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

    Фронтенд продукта включает два отдельных модуля:

    • 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.3.3-1_all.deb
    sudo apt install ./inno-lcm-app-shop_1.2.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.3.5 all [установлен]

    В случае неуспешной установки проверьте логи системы (см. раздел «Рекомендации по сбору и предоставлению информации о проблеме/ошибке» документа «Руководство по эксплуатации»).

    После установки deb-пакетов файлы для веб-сервера будут помещены в каталоги:

    • /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  domain-of-your-lcm-web-ui.vpn.company.com;
          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 {
              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 domain-of-your-lcm-web-ui.vpn.company.com;
          root /var/www/lcm-web-ui;
          index index.html;
      
          ssl_certificate /etc/certs/MY_CRT;
          ssl_certificate_key /etc/certs/MY_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 {
              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 —  настраивает проксирование запросов к API-серверу;

        • proxy_pass — директива, перенаправляющая запросы к /api на указанный бэкенд;

        • proxy_set_header — директива, устанавливающая необходимую информацию в заголовках запроса.

    2. Для передачи данных по HTTP переопределите значения только в первом блоке server; для передачи по HTTPS — также переопределите значения во втором блоке.

      1. В первом блоке server в поле server_name укажите имя домена.

      2. В первом блоке server в поле location /api задайте адрес обращения к бэкенду.

      3. (Опционально) во втором блоке server в поле server_name укажите имя домена.

      4. (Опционально) во втором блоке server в поле location /api задайте адрес обращения к бэкенду.

      5. (Опционально) в поле ssl_certificate укажите SSL-сертификат для обеспечения безопасного соединения.

      6. (Опционально) в поле 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

    Глоссарий

    Certificate Revocation List (CRL)

    Список отозванных сертификатов. Список сертификатов, которые удостоверяющий центр (Certificate Authority — CA) пометил как отозванные. Используется для проверки действительности сертификата. CRL содержит информацию о сертификатах, которые больше не должны использоваться, например, если они были скомпрометированы или утеряны.

    Cron-формат

    Формат времени, используемый в системах планирования задач в операционных системах Unix и Linux. Этот формат представляет собой строку, которая содержит шесть или семь полей, разделенных пробелами или табуляцией. В каждом поле задано значение времени или даты, когда задача должна быть выполнена. Поля могут содержать любые разрешенные значения, а также различные комбинации разрешенных специальных символов для этого поля.

    Deb-пакет (Debian package)

    Формат упаковки программного обеспечения для операционной системы Debian и ее производных, таких как Ubuntu. Deb-пакет содержит программу или библиотеку, а также информацию о зависимостях и конфигурации. Он может быть установлен с помощью менеджера пакетов, например, apt-get или dpkg. Deb-пакеты облегчают установку и обновление программного обеспечения в системе, а также позволяют управлять зависимостями между пакетами.

    PKCS#12

    Один из стандартов семейства Public-Key Cryptography Standards (PKCS), опубликованных RSA Laboratories.

    Privacy Enhanced Mail (PEM)

    Формат кодирования данных, который используется для хранения и передачи сертификатов, закрытых ключей, а также других конфиденциальных данных в виде текста. Формат PEM был разработан для безопасной передачи электронной почты, но сейчас широко используется в SSL/TLS-сертификатах и других системах безопасности.

    Service Principal Name (SPN)

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

    Агент (в терминологии SaltStack: Minion)

    Служебный узел, который управляется с помощью модуля координации. Он может являться физической или виртуальной машиной, контейнером или сетевым устройством. Агент подключается к серверу управления и получает от него команды для выполнения различных задач, таких как установка программного обеспечения, настройка конфигурации или мониторинг состояния системы. Агенту присваивается свой уникальный идентификатор, который используется для идентификации узла на сервере управления.

    Версия конфигурации

    Сущность продукта, которая представляет собой отдельный файл в формате JSON. Файл загружается в модуль «Кабинет администратора» и позволяет изменять конфигурацию в соответствии с требованиями пользователя. В файле указывается идентификатор версии, мета-атрибуты версии и параметры формулы, доступные для переопределения.

    Кабинет администратора

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

    Коллекция устройств

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

    Конфигурация

    Сущность продукта, которая представляет собой отдельный файл в формате JSON, содержащий описание набора метаданных для формулы SaltStack. Файл загружается в модуль «Кабинет администратора», и, используя формулу, обеспечивает выполнение установки и настройки системы в соответствии с требованиями пользователя.

    Магазин приложений

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

    Сервер управления (в терминологии SaltStack: Master)

    Центральный узел в инфраструктуре управления конфигурацией. Управляет всеми устройствами в инфраструктуре — агентами, отправляет команды на выполнение, хранит конфигурационные данные и предоставляет отчеты о выполнении задач. Также обеспечивает безопасную и защищенную связь между устройствами и сервером управления.

    Формула

    Сущность SaltStack, представляющая собой директорию с файлами состояний (файлы с расширением .sls) в формате YAML. Файлы состояний определяют поведение и конечное состояние системы, которого она должна достичь после применения формулы, и используются для установки, настройки и управления программным обеспечением, настройки сетевых параметров, создания пользователей и др. Виды формул:

    • готовые — загруженные на сервер готовые к использованию формулы с настройками по умолчанию; при необходимости могут быть переопределены пользователем;

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

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

    Сокращения

    AD

    Active Directory

    CRL

    Certificate Revocation List

    SPN

    Service Principal Name

    ОС

    Операционная система

    ПО

    Программное обеспечение