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

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

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

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

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

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

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

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

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

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

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

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

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

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

GPL-2.0 license

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 (при необходимости, следуйте инструкции по установке на официальном сайте SaltStack). Для SaltStack должен быть включен модуль salt-api для доступа к Мастеру через REST API.

Настройка SaltStack

Настройка SaltStack состоит из следующих этапов:

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

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

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

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

Создание хранилища Pillar

В директорию /master/roots/pillar добавьте файлы:

  • top.sls —  основной файл конфигурации:

    base:
      "*":
        - state-highstate-schedule
        - grains-common-schedule
  • grains-common-schedule.sls — задает расписание запуска выполнения задач на Миньонах

    schedule:
      get-common-grains:
        enabled: true
        function: grains.item
        seconds: 120
        splay: 10
        metadata:
          get-common-grains: true
        args:
          - fqdn
          - fqdn_ip4
          - lsb_distrib_description
          - cpu_model
          - disks
          - domain
          - hwaddr_interfaces
          - id
          - ip4_gw
          - ip4_interfaces
          - ip6_interfaces
          - kernel
          - kernelrelease
          - lsb_distrib_codename
          - master
          - mem_total
          - nodename
          - num_cpus
          - oscodename
          - osfullname
          - osmajorrelease
          - osrelease
          - pythonexecutable
          - saltversion
          - serialnumber
          - ssds
          - swap_total

    Где:

    • schedule/get-common-grains/enabled:

      • true — задача включена;

      • false — задача выключена;

    • schedule/get-common-grains/function — задает функцию SaltStack, которая будет вызвана при выполнении задачи;

    • schedule/get-common-grains/seconds — определяет, через какой интервал времени будет выполняться задача;

    • schedule/get-common-grains/splay — указывает, на какой интервал времени может быть случайная задержка перед выполнением задачи;

    • schedule/get-common-grains/metadata/get-common-grains — содержит метаданные задачи;

    • args — дополнительные аргументы для функции grains.item.

    • state-highstate-schedule.sls — задает расписание запуска высокоуровневых состояний (highstate) на Миньонах:

    schedule:
      apply-state-highstate:
        enabled: true
        run_on_start: true
        function: state.highstate
        seconds: 180
        splay: 30
        metadata:
          apply-state-highstate: true

    Пример:

    tree /srv/pillar/
    /srv/pillar/
    ├── grains-common-schedule.sls
    ├── state-highstate-schedule.sls
    └── top.sls

Добавление формул

  1. В файле file_roots.conf, который определяет корневую директорию для файловых серверов Salt, укажите путь к файлам конфигурации:

    Пример:

    file_roots:
      base:
        - /home/salt/data/srv/salt
        - /home/salt/data/formulas/ark-formula
        - /home/salt/data/formulas/ca-cert-formula
        - /home/salt/data/formulas/yandex-browser-formula
        - /home/salt/data/formulas/deb-repo-formula
        - /home/salt/data/formulas/google-chrome-formula
        - /home/salt/data/formulas/okular-formula

    Файл конфигурации:

    # /srv/salt/top.sls
    base:
      '*':
        - ark-formula
        - ca-cert-formula
        - yandex-browser-formula
        - deb-repo-formula
        - google-chrome-formula
        - okular-formula
  2. Выполните команду, чтобы распаковать архив в директорию file_roots базового окружения (по умолчанию — /srv/salt).

    Пример:

    tar -xvf ~/Downloads/salt-formulas-package-0.5.0.tar.gz \
        --strip-components 3 \
        -C /srv/salt \
        ./formulas/ark-formula/ark \
        ./formulas/ca-cert-formula/ca-cert \
        ./formulas/okular-formula/okular \
        ./formulas/yandex-browser-formula/yandex-browser \
        ./formulas/deb-repo-formula/deb-repo \
        ./formulas/google-chrome-formula/google-chrome

    Данная команда распаковывает архив salt-formulas-package-0.5.0.tar.gz, который содержит формулы SaltStack, в директорию /srv/salt. Опция --strip-components 3 указывает на то, что необходимо удалить первые три компонента пути внутри архива (например, если путь внутри архива выглядит как /formulas/ark-formula/ark, то после применения этой опции путь будет выглядеть как ./ark). В результате в директории /srv/salt будет создана поддиректория ./formulas/ark-formula/ark, содержащая файлы формулы ark-formula.

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

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

  • inno-lcm-core;

  • lcm-web-ui;

  • salt-formulas-package.

Подробнее об установке и настройке модуля salt-formulas-package см. раздел «Настройка SaltStack».

Установка модулей inno-lcm-core и lcm-web-ui

Чтобы установить модули inno-lcm-core и lcm-web-ui, сначала установите на сервере соответствующие Deb-пакеты из apt-репозитория.

Примечание.

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

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

Где:

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

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

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

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

Пример: inno-lcm-core_1.0.0-1_amd64.deb

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

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

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

Чтобы установить Deb-пакеты, выполните действия:

  1. Поместите файл с параметрами конфигурации inno-lcm-core и lcm-web-ui продукта в директорию /opt/inno-lcm-core/application.properties. Данный файл включает в себя параметры подключения к БД, LDAP-серверу и другие свойства.

Описание конфигурируемых параметров приведено в разделе «Параметры конфигурации бэкенда продукта».
  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://nexus.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 && sudo apt dist-upgrade -y

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

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

  6. Установите пакет lcm-web-ui, выполнив команду:

    sudo apt -f -y install lcm-web-ui

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

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

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

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

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

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

systemctl status lcm

Параметры конфигурации бэкенда продукта

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

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

quarkus.application.name

Имя продукта, с которым оно будет запущено

LCM APP

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

salt.order-item.batch.size

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

100

quarkus.datasource."designer".username

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

designer

quarkus.datasource."designer".password

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

password

quarkus.datasource."designer".reactive.url

Параметр для подключения DB-client, применяемого в модуле designer продукта. Формат аттрибута: postgresql://{db_host}:{db_port}/{db_name}

postgresql://{db_host}:5432/lcm

quarkus.datasource."designer".jdbc.url

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

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

quarkus.datasource."designer".jdbc.max-size

Максимальный размер пула datasource схемы designer

1

quarkus.liquibase."designer".migrate-at-start

Запуск миграции Liquibase для схемы designer при запуске продукта

true

quarkus.datasource."ordering".username

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

ordering

quarkus.datasource."ordering".password

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

password

quarkus.datasource."ordering".reactive.url

Параметр для подключения DB-client, применяемого в модуле ordering продукта. Формат аттрибута: postgresql://{db_host}:{db_port}/{db_name}

postgresql://{db_host}:5432/lcm

quarkus.datasource."ordering".jdbc.url

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

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

quarkus.datasource."ordering".jdbc.max-size

Максимальный размер пула datasource схемы ordering

1

quarkus.liquibase."ordering".migrate-at-start

Запуск миграции Liquibase для схемы ordering при запуске продукта

true

quarkus.datasource."service-catalog".username

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

service-catalog

quarkus.datasource."service-catalog".password

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

password

quarkus.datasource."service-catalog".reactive.url

Параметр для подключения DB-client, применяемого в модуле service-catalog продукта Формат аттрибута: postgresql://{db_host}:{db_port}/{db_name}

postgresql://{db_host}:5432/lcm

quarkus.datasource."service-catalog".jdbc.url

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

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

quarkus.datasource."service-catalog".jdbc.max-size

Максимальный размер пула datasource схемы service-catalog

1

quarkus.liquibase."service-catalog".migrate-at-start

Запуск миграции Liquibase для схемы service-catalog при запуске продукта

true

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

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

0 0 12 * * ?

quarkus.datasource."inventory".username

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

inventory

quarkus.datasource."inventory".password

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

password

quarkus.datasource."inventory".reactive.url

Параметр для подключения DB-client, применяемого в модуле inventory продукта. Формат аттрибута: postgresql://{db_host}:{db_port}/{db_name}

postgresql://{db_host}:5432/lcm

quarkus.datasource."inventory".jdbc.url

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

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

quarkus.datasource."inventory".jdbc.max-size

Максимальный размер пула datasource схемы inventory

1

quarkus.liquibase."inventory".migrate-at-start

Запуск миграции Liquibase для схемы inventory при запуске продукта

true

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

Получение сертификата 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-----

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

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

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

    Пример:

           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

Глоссарий

Deb-пакет (Debian package)

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

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

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

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

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

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

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