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

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

Версия 1.0.0

Содержание

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

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

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

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

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

    • 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-пакеты облегчают установку и обновление программного обеспечения в системе, а также позволяют управлять зависимостями между пакетами.

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

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

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

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

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

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

    Сокращения