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

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

Версия 1.1.0

Содержание

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

    Документ содержит описание общей схемы и последовательности установки продукта «Служба управления конфигурациями» (LCM).

    В общем случае процесс установки состоит из следующих этапов:

    Установка выполняется с использованием дистрибутива продукта «Служба управления конфигурациями» от ГК «Иннотех».

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

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

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

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

    • inno-lcm-salt-formulas — пакет с формулами для установки ПО на АРМ с использованием SaltStack;

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

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

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

    • в виде Deb-пакетов, доступных для установки из apt-репозитория https://artifacts.inno.tech/repository/<клиент>-<редакция>-apt-packages;

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

    • в виде архивов в формате tar.gz, доступных для загрузки из репозитория https://artifacts.inno.tech/repository/<клиент>-<редакция>-raw-packages.

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

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

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

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

    Astra Linux Special Edition

    Операционная система на базе Linux.

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

    1.7 и выше

    GNU General Public License

    ООО «РусБИТехАстра»

    LDAP-сервер

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

    Допускается использование любых серверов со стандартной схемой БД Microsoft
    • Microsoft Windows Server 2012 (или более новый);

    • Unboundid LDAP 4.0.16

    • Microsoft EULA;

    • GPL-2.0 license

    • Microsoft;

    • Open Source

    PostgreSQL

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

    Не ниже 14.0

    PostgreSQL Licence

    Open source

    SaltStack

    Система управления конфигурацией и автоматизации операций в ИТ-инфраструктуре

    Не ниже 3005.1

    Apache 2.0

    Open Source

    systemd

    Подсистема инициализации и управления службами в Linux, которая используется для установки Deb-пакетов

    245 и выше

    GPL-2.0 license

    Open Source

    Предварительные требования

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

    2. Убедитесь, что после установки SaltStack на сервере, для доступа к Мастеру через REST API для SaltStack включен модуль salt-api.

    3. Задайте настроечные параметры продукта (подключение к БД, LDAP-серверу и другие свойства) в файле конфигурации application.properties и поместите этот файл в директорию /opt/inno-lcm-core.

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

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

    Настройка бэкенда продукта

    Для настройки бэкенда продукта в конфигурационном файле application.properties задайте параметры, описанные в таблице:

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

    quarkus.http.port

    Порт, на котором работает LCM Rest API

    8081

    quarkus.log.file.enable

    Активация логирования в файл. Значение по умолчанию — true

    true

    quarkus.log.file.path

    Путь для сохранения файлов с логами продукта. Значение по умолчанию — quarkus.log

    path/application.log

    quarkus.log.file.format

    Формат записи логов в файл. Значение по умолчанию — %d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n

    %d{yyyy-MM-dd HH:mm:ss} %-5p [%c] (%t) %s%e%n

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

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

    5

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

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

    10М

    quarkus.log.file.rotation.rotate-on-boot

    Активация ротации при запуске продукта. Если установлено значение true, при запуске будет создан новый файл с логами. Значение по умолчанию — true

    true

    quarkus.datasource."ordering".username

    Имя пользователя для подключения к схеме ordering. Схема создается автоматически по имени пользователя

    ordering

    quarkus.datasource."ordering".password

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

    password

    quarkus.datasource."ordering".reactive.url

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

    postgresql://{db_host}:5432/lcm

    quarkus.datasource."ordering".jdbc.url

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

    dbc:postgresql://{db_host}:5432/lcm

    quarkus.datasource."lcm-db".username

    Имя пользователя для подключения к схеме lcm-db. Схема создается автоматически по имени пользователя

    lcm-db

    quarkus.datasource."lcm-db".password

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

    password

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

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

    postgresql://{db_host}:5432/lcm

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

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

    jdbc:postgresql://{db_host}:5432/lcm

    lcm.inventory.salt.pillar.schedule.highstate.second

    Параметр, определяющий через какой интервал времени будет выполняться операция применения назначенных конфигураций на АРМ. Значение по умолчанию — 84400 секунд

    84400

    lcm.inventory.salt.pillar.schedule.highstate.splay

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

    14400

    lcm.inventory.salt.pillar.schedule.grains-sync.second

    Параметр, определяющий через какой интервал времени будет выполняться операция синхронизации параметров Grains. Значение по умолчанию — 14400 секунд

    14400

    lcm.inventory.salt.pillar.schedule.grains-sync.splay

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

    2400

    lcm.inventory.salt.pillar.schedule.refresh-pillar.second

    Параметр, определяющий через какой интервал времени будет выполняться операция синхронизации хранилища Pillar. Значение по умолчанию — 14400 секунд

    14400

    lcm.inventory.salt.pillar.schedule.refresh-pillar.splay

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

    2400

    lcm.inventory.salt.pillar.schedule.grains.second

    Параметр, определяющий через какой интервал времени будет выполняться операция инвентаризации АРМ. Значение по умолчанию — 84400 секунд

    84400

    lcm.inventory.salt.pillar.schedule.grains.splay

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

    14400

    lcm.inventory.salt.command-batch-size

    Максимальное количество АРМ, которое будет обрабатывать команду, запущенную на Мастере. Значение по умолчанию — 100

    100

    lcm.designer.order-item.batch.size

    Максимальное количество элементов, которое содержится в запросе к модулю salt-adapter. При отсутствии атрибута в файле конфигурации значение по умолчанию — 10

    100

    lcm.inventory.job.sync-users.cron.expr

    Cron-выражение для настройки запуска синхронизации пользователей LDAP

    0 0 12 * * ?

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

    Задает расписание обновления коллекций. Значение по умолчанию: 0 0/15 * ? * * * (каждые 15 минут)

    0 0/15 * ? * * *

    lcm.inventory.ldap.search-page-size

    Максимальное количество пользователей для одной итерации синхронизации с LDAP

    500

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

    Условное обозначение домена

    domain_alias1

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

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

    192.168.0.1

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

    Порт для соединения по протоколу LDAP. Опциональный параметр. Значение по умолчанию — 389. Для LDAP over SSL обычно используется порт 636

    389

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

    Имя пользователя, которое будет использовано для подключения к домену MS AD.

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

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

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

    username1@domain1_name

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

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

    user_password

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

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

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

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

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

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

    Опциональный параметр. Значение по умолчанию — false

    true

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

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

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

    /home/username/cert1.pem

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

    Базовое имя домена для поиска пользователей в формате записи LDAP

    DC=domain_name1,DC=local

    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

    Указывает, разрешать ли использование экземпляра фабрики сокетов (который может совместно использоваться несколькими соединениями) для одновременного создания нескольких сокетов. Как правило, реализации фабрики сокетов являются потокобезопасными и могут создавать несколько соединений одновременно в отдельных потоках. В некоторых реализациях виртуальных машин (например, фабрики сокетов SSL в IBM JVM) этот параметр может использоваться, чтобы указать, следует ли разрешить одновременные попытки создания сокета (что может обеспечить лучшую и более стабильную производительность, особенно в случаях, когда попытка подключения не удалась из-за тайм-аута) или предотвратить (что может быть необходимо для непотоковой реализации фабрики сокетов). Опциональный параметр. Значение по умолчанию — true

    true

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

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

    salt-bucket

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

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

    pillar-bucket

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

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

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

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

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

    Настройка фронтенда продукта

    Для настройки фронтенда выполните шаги:

    1. Задайте адрес обращения к бэкенду продукта в конфигурационном файле Nginx CI-процесса. Путь к конфигурационному файлу: /etc/nginx/site-available/inno-lcm-webadmin.

      Пример:

             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;
                  }
          }
    2. Чтобы применить изменения, перезапустите Nginx-сервер, выполнив команду:

      service nginx restart

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

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

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

    Пример:

    openssl s_client -showcerts -connect 10.169.20.3:636

    Полученный сертификат вставьте в файл, указанный в параметре lcm.inventory.ldap.datasource[i].ssl-certificate.

    Ниже приведен пример формата файла с сертификатом SSL:

    -----BEGIN CERTIFICATE-----
    MIIGAzCCA+ugAwIBAgITPgAA73OOkh5tlMKRpwAAAADvczANBgkqhkiG9w0BAQwF
    #....
    3tC+mTiQEgt99WnACQHV9E9CN4Nhvj8PoTvoZxstCz2QMgw3p9F2wm/4n4aBOTei
    kNsrtXOXsA==
    -----END CERTIFICATE-----

    Установка Deb-пакетов с модулями продукта

    Установка продукта включает установку модулей:

    • inno-lcm-core;

    • inno-lcm-webadmin.

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

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

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

    Где:

    • package_name — имя пакета;

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

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

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

    Пример:

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

    Установка из apt-репозитория

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

    • наименование apt-репозитория в формате https://<repository.domain.name>/repository/<клиент>-<редакция>-apt-packages;

    • файл с публичным ключом для доступа к apt-репозиторию;

    • реквизиты для доступа к apt-репозиторию.

    Для установки пакетов на сервере из apt-репозитория:

    1. Добавьте публичный ключ для доступа к apt-репозиторию с пакетом стандартным способом, соответствующим используемому дистрибутиву Linux.

      Например, на Astra Linux 1.7 SE или Ubuntu 20.04 используйте стандартную утилиту apt-key:

      sudo apt-key add keyfile.pgp
      При необходимости установки ключа для проверки подписи исполняемых файлов в защищенном режиме работы Astra Linux 1.7 SE следуйте инструкции в официальной документации.

      На Ubuntu 22.04 и выше используйте следующую команду (от имени пользователя root):

      cat keyfile.gpg | gpg --dearmor > /usr/share/keyrings/innotech-keyring.gpg
    2. Создайте файл /etc/apt/auth.conf.d/innotech.conf и задайте в нем реквизиты для доступа к репозиторию в стандартном формате:

      machine <repo_host> login <repo_user> password <repo_password>
    3. Подключите требуемый apt-репозиторий в соответствии с инструкциями для используемого дистрибутива Linux (см., например, инструкцию в официальной документации Astra Linux).

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

      echo -e "deb [trusted=yes] https://artifactory.inno.tech/repository/vtb-astra-apt-packages 1.7_x86-64 main" | sudo tee /etc/apt/sources.list.d/innotech.list
    4. Обновите пакеты с помощью стандартной команды.

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

      sudo apt update
    5. Установите пакет inno-lcm-core, выполнив команду:

      sudo apt -f -y install inno-lcm-core
    6. Установите пакет inno-lcm-webadmin, выполнив команду:

      sudo apt -f -y install inno-lcm-webadmin

    Установка из архива

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

    • наименование репозитория с пакетами в формате https://<repository.domain.name>/repository/<клиент>-<редакция>-raw-packages;

    • реквизиты для доступа к apt-репозиторию.

    Для установки пакетов на сервере из архивов:

    1. Загрузите архивы с пакетами требуемых версий и соответствующие файлы контрольных сумм из репозитория https://artifacts.inno.tech/repository/<клиент>-<редакция>-raw-packages любым доступным способом.

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

      Например:

      shasum -a 512 -c inno-lcm-core-1.1.0.tar.gz inno-lcm-core-1.1.0.tar.gz.sha512
    3. Создайте временный каталог для распаковки и распакуйте архив:

      Например:

      mkdir inno-lcm
      tar xvf inno-lcm-core-1.1.0-amd64.tar.gz -C inno-lcm
    4. Установите Deb-пакеты стандартным способом:

      Например:

      cd inno-lcm-core/packages
      sudo apt install inno-lcm-core_1.1.0_amd64.deb

    Проверка установки

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

    1. Распакованы архивы пакетов.

    2. Прочитан файл с конфигурацией.

    3. Создана systemd-служба lcm.

    4. Запущена служба lcm.

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

    systemctl status lcm

    Настройка SaltStack

    Настройка SaltStack включает этапы:

    Настройка конфигурации Мастеров

    Узел Мастер настраивается через главный файл конфигурации. По умолчанию файл конфигурации хранится в директории /etc/salt/master. В данном файле необходимо выполнить настройку, которая обеспечит трансляцию событий на узел Master of Masters (MoM): syndic_forward_all_events: True.

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

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

    1. Создайте файл /etc/salt/master/fileserver_backend.conf и укажите в нем, что в качестве бэкенда для файлов будет использоваться хранилище S3:

      fileserver_backend:
        - s3fs
    2. В файле /etc/salt/master/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.buckets указана корзина с именем salt-bucket для хранения файлов состояния и формул.

      Подробное описание остальных параметров приведено в официальной документации.
    3. Выполните настройку подключения к S3 для хранения в отдельной корзине данных хранилища Pillar — создайте файл /etc/salt/master/ext_pillar.conf, в котором будет указана корзина pillar-bucket:

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

    Настройка конфигурации Миньонов

    Узел Миньон настраивается через файл конфигурации. По умолчанию файл конфигурации хранится в директории /etc/salt/minion.

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

    Загрузка пользовательских формул в хранилище S3

    Готовые формулы (подробнее см. раздел «Готовые формулы» документа «Руководство по эксплуатации») импортируются автоматически при установке продукта.

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

    Глоссарий

    Deb-пакет (Debian package)

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

    Автоматизированное рабочее место (АРМ)

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

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

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

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

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

    Сокращения