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

Руководство по эксплуатации

Версия 1.0.0

Содержание

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

    В документе описаны настройки для корректной работы продукта «Служба управления конфигурациями».

    Работа с модулем координации

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

    В SaltStack используется модель «мастер-клиент», в рамках которой главный узел Salt Master (далее — Мастер) отправляет команды клиенту — служебному узлу Salt Minion (далее — Миньон), а клиент эти команды выполняет и отправляет свои отчеты о выполнении задач обратно на Мастер.

    Связь между Мастером и Миньонами осуществляется по транспортному протоколу ZeroMQ. Канал зашифрован парой открытого и закрытого ключей. Пара ключей генерируется Миньоном, после чего он отправляет свой открытый ключ Мастеру.

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

    Компонент Описание

    API

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

    0MQ (ZeroMQ)

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

    Мастер (Master)

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

    Мастер Мастеров (Master of Masters)

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

    Миньон (Minion)

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

    Синдик (Syndic)

    Компонент SaltStack, который позволяет управлять несколькими узлами, находящимися в разных сетях или дата-центрах как единым целым. Синдик объединяет несколько Мастеров в единую систему управления, что обеспечивает более высокую отказоустойчивость и масштабируемость. Также позволяет использовать различные стратегии для распределения задач между узлами для повышения эффективность работы системы

    Шина событий

    Используется для обмена информацией о событиях, происходящих на узлах. Если на Миньоне происходит какое-либо событие, например установка ПО или изменении конфигурации, он отправляет сообщение в шину событий. Мастер может подписаться на эти сообщения и реагировать на них, выполняя определенные действия. Также шина событий используется для мониторинга состояния системы и быстрого обнаружения проблем

    Хранилище Pillar

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

    Файловый сервер

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

    Методы управления Миньонами

    SaltStack поддерживает следующие методы управления Миньонами:

    Удаленное выполнение

    Удаленное выполнение реализовано посредством модуля выполнения Salt.

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

    Цели

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

    Цель — это группа Миньонов на одном или нескольких Мастерах, к которым применяется Salt-команда.

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

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

    salt '*' test.ping

    Где:

    • звездочка (*) — цель, которая определяет всех Миньонов;

    • test.ping — передает Миньонам команду запустить функцию test.ping:

    SaltStack позволяет указывать Миньонов в качестве цели по большому количеству критериев:

    Пример 1:

    salt 'larry1, larry2, curly1' test.ping

    Пример 2:

    salt 'larry*' test.ping

    Пример 3:

    salt '*1' test.ping

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

    Параметры Grains

    SaltStack использует систему параметров Grains для построения статических данных, полученных от Миньонов. Эти данные включают в себя информацию об операционной системе, CPU-архитектуре и др. Система параметров Grains используется SaltStack для доставки данных платформы многим компонентам и пользователям.

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

    Например, параметры Grains назначаются Миньонам, чтобы указать, какая роль или роли возможны для Миньона. Параметры Grains могут быть установлены в конфигурационном файле Миньона или через функцию grains.setval.

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

    salt -G 'os:Ubuntu' test.version

    Где:

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

    • os:Ubuntu — операционная система Ubuntu, которая определяется по значению переменной os, которая должна быть задана на каждом узле. test.version  — команда вывода версии Salt, которая должна быть выполнена на всех узлах, для которых определен тег -G и задана переменная os:Ubuntu.

    Использование параметров Grains (статистических данных-фактов, полученных от Миньонов) также возможно за счет использования шаблонов Jinja.

    В примере ниже файл состояния /srv/salt/webserver_setup.sls устанавливает Apache и настраивает имя для пакета в соответствии с операционной системой:

    install_apache:
      pkg.installed:
        {% if grains['os'] == 'CentOS' %}
        - name: httpd
        {% else %}
        - name: apache
        {% endif %}

    Управление конфигурацией

    Состояния

    Наряду с удаленным выполнением, SaltStack поддерживает метод управления Миньонами путем объявления состояния (Salt State), в котором он должен находиться.

    Состояния определяются в файлах состояний с расширением .sls (Salt State).

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

    Формулы

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

    Top-файл

    В дополнение к ручному запуску состояний Миньонов, SaltStack также поддерживает их автоматический запуск. Для этого используется Top-файл — основной файл конфигурации. В Top-файле определяются соответствия между именами Миньонов и формулами, которые будут применены к этим Миньонам. В данном случае решается задача масштабирования, что позволяет избежать запуска каждого состояния по отдельности и вручную, когда в какой-либо среде существуют сотни файлов состояний, предназначенных для нескольких тысяч Миньонов.

    Хранилище Pillars

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

    Хранилище Pillar организовано в виде директории, которая содержит файлы состояния — YAML-файлы с конфигурационными данными. Каждый файл соответствует определенному Миньону или группе Миньонов и содержит информацию о параметрах конфигурации для этого Миньона или группы. Для удобства файлы могут быть разбиты на поддиректории.

    Top-файл top.sls определяет связь между файлами состояний и Миньонами.

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

    Информация, передаваемая с помощью хранилища Pillar, содержит словарь, который генерируется для целевого Миньона и шифруется с помощью ключа этого Миньона для защищенной передачи данных. Данные хранилища Pillar шифруются для каждого Миньона по отдельности, что позволяет использовать их для хранения конфиденциальных данных, относящихся к конкретному Миньону.

    Ниже приведен пример создания системных пользователей для Миньонов с помощью хранилища Pillar:

    1. Сохраните данные пользователей в Хранилище Pillar в файле с разрешением .sls —  /srv/Pillar/user_info.sls:

      users:
        thatch: 1000
        shouse: 1001
        utahdave: 1002
        redbeard: 1003
    2. Создайте Top-файл, который будет передавать данные Pillar в Миньоны — /srv/Pillar/top.sls:

      base:
        '*':
          - user_info

    Шаблоны Jinja

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

    Ниже приведен пример файла состояния /srv/salt/user_setup.sls, в котором используются данные Pillar из предыдущей секции для создания пользователей системы:

    {% for user, uid in Pillar.get('users', {}).items() %}
    {{ user }}:
      user.present:
        - uid: {{ uid }}
    {% endfor %}

    SaltStack компилирует файл состояния в подобный файл прежде, чем применить его к Миньону:

    thatch:
      user.present:
        - uid: 1000
    
    shouse:
      user.present:
        - uid: 1001
    
    utahdave:
      user.present:
        - uid: 1002
    
    redbeard:
      user.present:
        - uid: 1003

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

    salt '*' state.apply user_setup

    Используемые формулы

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

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

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

    Формула ca-cert-formula

    Формула SaltStack для установки CA-сертификатов.

    Доступные состояния:

    Состояние ca-cert

    Мета-состояние (состояние, которое включает в себя другие состояния).

    Устанавливает сертификаты в системном хранилище и хранилища профилей пользователей (NSSDB). Имеет зависимость от ca-cert.sys, ca-cert.user через список include.

    Состояние ca-cert.sys

    Имеет зависимость от ca-cert.sys.install через список include.

    Состояние ca-cert.sys.install

    Запускает команду sys.certs_update_cmd для обновления системных сертификатов и имеет зависимость от ca-cert.sys.certs.files через список include и реквизит onchanges.

    Состояние ca-cert.sys.certs.files

    Сохраняет на диске (в директории certs.dest_dir) файлы сертификата из списка certs.files.

    Состояние ca-cert.user

    Имеет зависимость от ca-cert.user.install через список include.

    Состояние ca-cert.user.install

    Имеет зависимость от ca-cert.user.nssdb через список include.

    Состояние ca-cert.user.nssdb

    Имеет зависимость от ca-cert.user.nssdb.update через список include.

    Состояние ca-cert.user.nssdb.update

    Добавляет сертификаты в хранилища профилей пользователей (NSSDB) и имеет зависимость от:

    • ca-cert.user.nssdb.create через список include и реквизит require;

    • ca-cert.user.certs.files через список include и реквизит onchanges.

    Если в хранилище Pillar нет пользователей в user.usernames, пользователи будут настраиваться по имени каталога в /home.

    Состояние ca-cert.user.nssdb.create

    Создает хранилище сертификатов пользователя (NSSDB) в домашней директории пользователя и имеет зависимость от ca-cert.user.package.instal через список include и реквизит require. Если в хранилище Pillar нет пользователей в user.usernames, пользователи будут настраиваться по имени каталога в /home.

    Состояние ca-cert.user.package.install

    Устанавливает пакет cacert.user.pkg.name (по умолчанию — libnss3-tools).

    Состояние ca-cert.user.certs.files

    Сохраняет на диске (в директории certs.dest_dir_user) файлы сертификата из списка certs.files.

    Состояние ca-cert.clean

    Мета-состояние (состояние, которое включает в себя другие состояния).

    Удаляет сертификаты их системного хранилища и хранилища профилей пользователей (NSSDB). Имеет зависимость от ca-cert.sys.clean, ca-cert.user.clean через список include.

    Состояние ca-cert.sys.clean

    Запускает команду sys.certs_update_cmd для обновления системных сертификатов и имеет зависимость от ca-cert.sys.certs.clean через список include и реквизит onchanges.

    Состояние ca-cert.sys.certs.clean

    Удаляет с диска (директория certs.dest_dir) файлы сертификата из списка certs.files.

    Состояние ca-cert.user.clean

    Имеет зависимость от ca-cert.user.nssdb.clean, ca-cert.user.package.clean через список включения.

    Состояние ca-cert.user.nssdb.clean

    Удаляет сертификаты из хранилища профилей пользователей (NSSDB) и имеет зависимость от ca-cert.user.certs.clean через список include и реквизит require.

    Состояние ca-cert.user.certs.clean

    Удаляет с диска (директория certs.dest_dir_user) файлы сертификата из списка certs.files.

    Состояние ca-cert.user.package.clean

    Удаляет пакет cacert.user.pkg.name (по умолчанию — libnss3-tools).

    Пример файла pillar.example
    ca-cert:
      # Переопределите значение map.jinja
      lookup:
        # Укажите параметры сертификатов
        certs:
          # Укажите список имен файлов сертификатов. Значения не могут быть пустыми
          #  Значения должны быть указаны в виде списка через запятую
          files: [
            "my_ca_1.crt",
            "my_ca_2.crt",
          ]
          # Укажите полный путь к каталогу, в котором хранятся файлы сертификатов,
          #  на файловом сервере Salt
          source_dir: "salt://files/cacerts/"
          # Укажите полный путь к каталогу для системных сертификатов на миньоне
          dest_dir: "/usr/local/share/ca-certificates/"
          # Укажите полный путь к каталогу для общих сертификатов пользователей на миньоне
          dest_dir_user: "/usr/local/share/ca-certificates-nssdb/"
        # Укажите некоторые параметры системы
        sys:
          # Укажите команду, которая будет выполняться для обновления системных сертификатов
          certs_update_cmd: "update-ca-certificates --fresh"
        # Укажите некоторые параметры пользователей
        user:
          # Укажите список имен пользователей для обновления сертификатов. Если пользователи
          # не заданы, пользователи будут выбраны по имени каталога в /home
          usernames: [
            "username_1",
            "username_1",
          ]

    Формула ark-formula

    Формула SaltStack для установки пакета Ark (инструмент для сжатия/распаковки графических файлов).

    Доступные состояния:

    Состояние ark

    Мета-состояние (состояние, которое включает в себя другие состояния).

    Устанавливает пакет Ark из целевого репозитория. Имеет зависимость от ark.repository, ark.package через список include.

    Состояние ark.repository

    Имеет зависимость от ark.repository.install через список include.

    Состояние ark.repository.install

    Импортирует репозиторий, если значение repo.name указано в хранилище Pillars (или не пустое по умолчанию) и имеет зависимость от:

    • ark.repository.package.install через список include;

    • ark.repository.key.install через список include и реквизит require.

    Состояние ark.repository.package.install

    Устанавливает пакеты repo.required_packages(по умолчанию — gpg).

    Состояние ark.repository.key.install

    Загружает repo.key_file в Миньон и декодирует данные файла из формата base64 в бинарный.

    Состояние ark.package

    Устанавливает пакет Ark.

    Состояние ark.clean

    Мета-состояние (состояние, которое включает в себя другие состояния).

    Отменяет все действия, выполненные в мета-состоянии ark, в обратном порядке, т.е. удаляет пакет и удаляет целевой репозиторий (если он был импортирован). Имеет зависимость от ark.package.clean и ark.repository.clean через список include.

    Состояние ark.package.clean

    Удаляет пакет Ark.

    Состояние ark.repository.clean

    Удаляет файл конфигурации репозитория. Имеет зависимость от ark.repository.key.clean через список include.

    Состояние ark.repository.key.clean

    Удаляет Key-файл репозитория.

    Пример файла pillar.example
    ark:
      # Переопределите значение map.jinja
      lookup:
        # Укажите параметры пакета
        pkg:
          # Укажите имя пакета для конкретной ОС
          name: my-ark
          # Укажите конкретную версию пакета. Если значение представляет собой пустую строку, используется последняя версия
          version: '1.0.0.685-1'
          # Укажите репозиторий, из которого будет производиться установка. Когда репозиторий будет добавлен (по repo.name),
          # он будет назначен заданному релизу (suite).
          #  Значение может быть пустой строкой
          fromrepo: 'stable'
        # Укажите параметры репозитория
        repo:
          # Укажите имя репозитория, которое будет импортировано в систему. Значение должно быть указано в формате
          # one-line-style (https://manpages.debian.org/unstable/apt/sources.list.5.en.html#THE_DEB_AND_DEB-SRC_TYPES:_GENERAL_FORMAT)
          # без опций. Чтобы задать опции, используйте дополнительные параметры репозитория.
          # Если значение представляет собой пустую строку, то репозиторий не будет импортирован
          name: 'deb https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64'
          # Выполните настройку репозитория, чтобы он стал недоступным для поиска и установки пакетов.
          # Значения: True или False
          disabled: False
          # Укажите тип пакетов (компонентов), которые будут установлены из репозитория (например, main, nonfree, ...).
          # Значения параметра comps должны быть заданы в виде списка через запятую
          comps: 'main,contrib,non-free'
          # Укажите имена файлов .list и .gpg. Не могут быть пустой строкой
          conf_name: 'ark'
          # Укажите key-файл (.gpg) для загрузки в Миньон. Этот файл может храниться как на сервере Мастера,
          # так и на серверах HTTP(S) или FTP.
          # Этот файл используется в опции репозитория signed-by. Значение может быть пустой строкой.
          key_file: 'salt://files/keys/MY-ARK-KEY.GPG'
          # Установите значение True, чтобы декодировать данные key-файла из формата base64 в бинарный
          key_file_dearmor: True
          # Установите полный путь к каталогу ключей на миньоне
          key_keyrings_dir: '/etc/apt/keyrings/'
          # Укажите имена для установки пакетов, необходимых для импорта репозитория. Значения должны быть представлены в виде списка через запятую
          required_packages: [ 'gpg' ]

    Формула deb-repo

    Формула SaltStack для добавления пользовательского репозитория с Deb-пакетами.

    Доступные состояния:

    Состояние deb-repo

    Мета-состояние (состояние, которое включает в себя другие состояния).

    Добавляет и настраивает Deb-репозиторий. Имеет зависимость от deb-repo.install через список include.

    Состояние deb-repo.install

    Импортирует репозиторий, если значение name указано в хранилище Pillars (или не пустое по умолчанию).

    Состояние deb-repo.key.install

    Загружает deb-repo.key_file в Миньон и декодирует данные файла из формата base64 в бинарный.

    Состояние deb-repo.clean

    Удаляет файл конфигурации репозитория. Имеет зависимость от deb-repo.key.clean через список include.

    Состояние deb-repo.key.clean

    Удаляет Key-файл репозитория.

    Пример файла pillar.example
    deb-repo:
      # Переопределите значение map.jinja
      lookup:
        # Укажите имя репозитория, которое будет импортировано в систему. Значение должно быть указано в формате
        # one-line-style (https://manpages.debian.org/unstable/apt/sources.list.5.en.html#THE_DEB_AND_DEB-SRC_TYPES:_GENERAL_FORMAT)
        #  с опциями в квадратных скобках ([]). Опции используются для установки дополнительных параметров репозитория,
        # например, `signed-by`, `trusted`, `allow-insecure`.
        #  Опция настройки архитектуры ('arch') будет добавлена автоматически из параметра grain на Миньоне
        name: 'deb [signed-by=/etc/apt/keyrings/repo-key.gpg trusted=yes] https://dl.astralinux.ru/astra/stable/1.7_x86-64/repository-main/ 1.7_x86-64'
        # Выполните настройку репозитория, чтобы он стал недоступным для поиска и установки пакетов.
        # Значения: True или False
        disabled: False
        # Укажите тип пакетов (компонентов), которые будут установлены из репозитория (например, main, nonfree, ...).
        # Значения параметра comps должны быть заданы в виде списка через запятую
        comps: 'main,contrib,non-free'
        # Укажите имена файлов .list и .gpg. Не могут быть пустой строкой
        conf_name: 'repository-main'
        # Укажите key-файл (.gpg) для загрузки в Миньон. Этот файл может храниться как на сервере Мастера,
        # так и на серверах HTTP(S) или FTP.
        # Этот файл используется в опции репозитория signed-by. Значение может быть пустой строкой.
        # Отсутствие значения означает, что key-файл не будет импортирован и не будет использоваться.
        # Если используется key-файл, необходимо добавить опцию в формате 'signed-by={{ key_keyrings_dir }}{{ conf_name }}.gpg', example 'signed-by=/etc/apt/keyrings/repository-main.gpg'
        key_file: ''
        # Установите значение True, чтобы декодировать данные key-файла из формата base64 в бинарный
        key_file_dearmor: False
        # Установите полный путь к каталогу ключей на миньоне
        key_keyrings_dir: '/etc/apt/keyrings/'
        # Укажите имена для установки пакетов, необходимых для импорта репозитория. Значения должны быть представлены в виде списка через запятую
        required_packages: [ 'gpg' ]

    Формула okular-formula

    Формула SaltStack для установки ПО Okular (для просмотра документов в различных форматах).

    Доступные состояния:

    Состояние okular

    Мета-состояние (состояние, которое включает в себя другие состояния).

    Устанавливает пакет okular из целевого репозитория. Имеет зависимость от okular.repository и okular.package через список include.

    Состояние okular.repository

    Имеет зависимость от okular.repository.install через список include.

    Состояние okular.repository.install

    Импортирует репозиторий, если значение repo.name указано в хранилище Pillars (или не пустое по умолчанию). Имеет зависимость от:

    • okular.repository.package.install через список include;

    • okular.repository.key.install` через список include и реквизит require.

    Состояние okular.repository.package.install

    Устанавливает пакеты repo.required_packages (по умолчанию — gpg).

    Состояние okular.repository.key.install

    Загружает repo.key_file в Миньон и декодирует данные файла из формата base64 в бинарный.

    Состояние okular.package

    Устанавливает пакет okular.

    Состояние okular.clean

    Мета-состояние (состояние, которое включает в себя другие состояния).

    Отменяет все действия, выполненные в мета-состоянии okular, в обратном порядке, т.е. удаляет пакет и удаляет целевой репозиторий (если он был импортирован). Имеет зависимость от okular.package.clean и okular.repository.clean через список include.

    Состояние okular.package.clean

    Удаляет пакет okular.

    Состояние okular.repository.clean

    Удаляет файл конфигурации репозитория. Имеет зависимость от okular.repository.key.clean через список include.

    Состояние okular.repository.key.clean

    Удаляет Key-файл репозитория.

    Пример файла pillar.example
    okular:
      # Переопределите значение map.jinja
      lookup:
        # Укажите параметры пакета
        pkg:
          # Укажите имя пакета для конкретной ОС
          name: okular
          # Set the specific version of a package. If value is an empty string then used latest version
          version: ''
          # Укажите репозиторий, из которого будет производиться установка. Когда репозиторий будет добавлен (по repo.name),
          # он будет назначен заданному релизу (suite).
          #  Значение может быть пустой строкой
          fromrepo: ''
        # Укажите параметры репозитория
        repo:
          # Укажите имя репозитория, которое будет импортировано в систему. Значение должно быть указано в формате
          # one-line-style (https://manpages.debian.org/unstable/apt/sources.list.5.en.html#THE_DEB_AND_DEB-SRC_TYPES:_GENERAL_FORMAT)
          # без опций. Чтобы задать опции, используйте дополнительные параметры репозитория.
          # Если значение представляет собой пустую строку, то репозиторий не будет импортирован
          name: ''
          # Выполните настройку репозитория, чтобы он стал недоступным для поиска и установки пакетов.
          # Значения: True или False
          disabled: False
          # Укажите тип пакетов (компонентов), которые будут установлены из репозитория (например, main, nonfree, ...).
          # Значения параметра comps должны быть заданы в виде списка через запятую
          comps: ''
          # Укажите имена файлов .list и .gpg. Не могут быть пустой строкой
          conf_name: 'okular'
          # Укажите key-файл (.gpg) для загрузки в Миньон. Этот файл может храниться как на сервере Мастера,
          # так и на серверах HTTP(S) или FTP.
          # Этот файл используется в опции репозитория signed-by. Значение может быть пустой строкой.
          key_file: ''
          # Установите значение True, чтобы декодировать данные key-файла из формата base64 в бинарный
          key_file_dearmor: True
          # Установите полный путь к каталогу ключей на миньоне
          key_keyrings_dir: '/etc/apt/trusted.gpg.d/'
          # Укажите имена для установки пакетов, необходимых для импорта репозитория. Значения должны быть представлены в виде списка через запятую
          required_packages: [ 'gpg' ]

    Формула google-chrome-formula

    Формула SaltStack для установки веб-браузера Google Chrome.

    Доступные состояния:

    Состояние google-chrome

    Мета-состояние (состояние, которое включает в себя другие состояния).

    Устанавливает пакет google-chrome из целевого репозитория. Имеет зависимость от google-chrome.repository и google-chrome.package через список include.

    Состояние google-chrome.repository

    Имеет зависимость от google-chrome.repository.install` через список include.

    Состояние google-chrome.repository.install

    Импортирует репозиторий, если значение repo.name указано в хранилище Pillars (или не пустое по умолчанию). Имеет зависимость от:

    • google-chrome.repository.package.install через список include;

    • google-chrome.repository.key.install` через список include и реквизит require.

    Состояние google-chrome.repository.package.install

    Устанавливает пакты repo.required_packages (по умолчанию — gpg).

    Состояние google-chrome.repository.key.install

    Загружает repo.key_file в Миньон и декодирует данные файла из формата base64 в бинарный.

    Состояние google-chrome.package

    Устанавливает пакет google-chrome.

    Состояние google-chrome.clean

    Мета-состояние (состояние, которое включает в себя другие состояния).

    Отменяет все действия, выполненные в мета-состоянии google-chrome, в обратном порядке, т.е. удаляет пакет и удаляет целевой репозиторий (если он был импортирован). Имеет зависимость от google-chrome.package.clean и google-chrome.repository.clean через список include.

    Состояние google-chrome.package.clean

    Удаляет пакет google-chrome.

    Состояние google-chrome.repository.clean

    Удаляет файл конфигурации репозитория. Имеет зависимость от google-chrome.repository.key.clean через список include.

    Состояние google-chrome.repository.key.clean

    Удаляет Key-файл репозитория.

    Пример файла pillar.example
    google-chrome:
      # Переопределите значение map.jinja
      lookup:
        # Укажите параметры пакета
        pkg:
          # Укажите имя пакета для конкретной ОС
          name: google-chrome-stable
          # Set the specific version of a package. If value is an empty string then used latest version
          version: ''
          # Укажите репозиторий, из которого будет производиться установка. Когда репозиторий будет добавлен (по repo.name),
          # он будет назначен заданному релизу (suite).
          #  Значение может быть пустой строкой
          fromrepo: ''
        # Укажите параметры репозитория
        repo:
          # Укажите имя репозитория, которое будет импортировано в систему. Значение должно быть указано в формате
          # one-line-style (https://manpages.debian.org/unstable/apt/sources.list.5.en.html#THE_DEB_AND_DEB-SRC_TYPES:_GENERAL_FORMAT)
          # без опций. Чтобы задать опции, используйте дополнительные параметры репозитория.
          # Если значение представляет собой пустую строку, то репозиторий не будет импортирован
          name: 'deb http://dl.google.com/linux/chrome/deb/ stable main'
          # Выполните настройку репозитория, чтобы он стал недоступным для поиска и установки пакетов.
          # Значения: True или False
          disabled: False
          # Укажите тип пакетов (компонентов), которые будут установлены из репозитория (например, main, nonfree, ...).
          # Значения параметра comps должны быть заданы в виде списка через запятую
          comps: ''
          # Укажите имена файлов .list и .gpg. Не могут быть пустой строкой
          conf_name: 'google-chrome'
          # Укажите key-файл (.gpg) для загрузки в Миньон. Этот файл может храниться как на сервере Мастера,
          # так и на серверах HTTP(S) или FTP.
          # Этот файл используется в опции репозитория signed-by. Значение может быть пустой строкой.
          key_file: 'https://dl.google.com/linux/linux_signing_key.pub'
          # Установите значение True, чтобы декодировать данные key-файла из формата base64 в бинарный
          key_file_dearmor: True
          # Установите полный путь к каталогу ключей на миньоне
          key_keyrings_dir: '/etc/apt/keyrings/'
          # Укажите имена для установки пакетов, необходимых для импорта репозитория. Значения должны быть представлены в виде списка через запятую
          required_packages: [ 'gpg' ]

    Формула yandex-browser-formula

    Формула SaltStack для установки веб-браузера Yandex.

    Доступные состояния:

    Состояние yandex-browser

    Мета-состояние (состояние, которое включает в себя другие состояния).

    Устанавливает пакет yandex-browser из целевого репозитория. Имеет зависимость от yandex-browser.repository и yandex-browser.package через список include.

    Состояние yandex-browser.repository

    Имеет зависимость от yandex-browser.repository.install` через список include.

    Состояние yandex-browser.repository.install

    Импортирует репозиторий, если значение repo.name указано в хранилище Pillars (или не пустое по умолчанию). Имеет зависимость от:

    • yandex-browser.repository.package.install через список include;

    • yandex-browser.repository.key.install` через список include и реквизит require.

    Состояние yandex-browser.repository.package.install

    Устанавливает пакты repo.required_packages (по умолчанию — gpg).

    Состояние yandex-browser.repository.key.install

    Загружает repo.key_file в Миньон и декодирует данные файла из формата base64 в бинарный.

    Состояние yandex-browser.package

    Устанавливает пакет yandex-browser.

    Состояние yandex-browser.clean

    Мета-состояние (состояние, которое включает в себя другие состояния).

    Отменяет все действия, выполненные в мета-состоянии yandex-browser, в обратном порядке, т.е. удаляет пакет и удаляет целевой репозиторий (если он был импортирован). Имеет зависимость от yandex-browser.package.clean и yandex-browser.repository.clean через список include.

    Состояние yandex-browser.package.clean

    Удаляет пакет yandex-browser.

    Состояние yandex-browser.repository.clean

    Удаляет файл конфигурации репозитория. Имеет зависимость от yandex-browser.repository.key.clean через список include.

    Состояние yandex-browser.repository.key.clean

    Удаляет Key-файл репозитория.

    Пример файла pillar.example
    yandex-browser:
      # Переопределите значение map.jinja
      lookup:
        # Укажите параметры пакета
        pkg:
          # Укажите имя пакета для конкретной ОС
          name: yandex-browser-stable
          # Set the specific version of a package. If value is an empty string then used latest version
          version: '23.5.4.685-1'
          # Укажите репозиторий, из которого будет производиться установка. Когда репозиторий будет добавлен (по repo.name),
          # он будет назначен заданному релизу (suite).
          #  Значение может быть пустой строкой
          fromrepo: 'stable'
        # Укажите параметры репозитория
        repo:
          # Укажите имя репозитория, которое будет импортировано в систему. Значение должно быть указано в формате
          # one-line-style (https://manpages.debian.org/unstable/apt/sources.list.5.en.html#THE_DEB_AND_DEB-SRC_TYPES:_GENERAL_FORMAT)
          # без опций. Чтобы задать опции, используйте дополнительные параметры репозитория.
          # Если значение представляет собой пустую строку, то репозиторий не будет импортирован
          name: 'deb http://repo.yandex.ru/yandex-browser/deb stable'
          # Выполните настройку репозитория, чтобы он стал недоступным для поиска и установки пакетов.
          # Значения: True или False
          disabled: False
          # Укажите тип пакетов (компонентов), которые будут установлены из репозитория (например, main, nonfree, ...).
          # Значения параметра comps должны быть заданы в виде списка через запятую
          comps: 'main,contrib,non-free'
          # Укажите имена файлов .list и .gpg. Не могут быть пустой строкой
          conf_name: 'yandex-browser'
          # Укажите key-файл (.gpg) для загрузки в Миньон. Этот файл может храниться как на сервере Мастера,
          # так и на серверах HTTP(S) или FTP.
          # Этот файл используется в опции репозитория signed-by. Значение может быть пустой строкой.
          key_file: 'https://repo.yandex.ru/yandex-browser/YANDEX-BROWSER-KEY.GPG'
          # Установите значение True, чтобы декодировать данные key-файла из формата base64 в бинарный
          key_file_dearmor: True
          # Установите полный путь к каталогу ключей на миньоне
          key_keyrings_dir: '/etc/apt/keyrings/'
          # Укажите имена для установки пакетов, необходимых для импорта репозитория. Значения должны быть представлены в виде списка через запятую
          required_packages: [ 'gpg' ]

    Работа с модулем инвентаризации

    Модуль инвентаризации (lcm-inventory) предназначен для сбора и хранения данных о пользователях и устройствах компании, а также для работы с группами (коллекциями) автоматизированных рабочих мест (далее — АРМ), которые могут быть сформированы по различным признакам.

    Коллекция АРМ — это множество АРМ, которое формируется в результате фильтрации всех АРМ по атрибутам самих АРМ и атрибутам пользователей, ассоциированных с ними.

    Подробнее о создании и обновлении коллекций АРМ см. в разделе «Создание и обновление коллекций АРМ».

    Модуль инвентаризации обеспечивает следующие способы загрузки атрибутов в коллекции АРМ:

    Импорт данных из SaltStack по аппаратной конфигурации АРМ

    Модуль инвентаризации позволяет импортировать следующие технические характеристики АРМ с платформы SaltStack:

    • актуальные данные по аппаратной конфигурации АРМ;

    • актуальные данные системного ПО АРМ;

    • список фактически развернутого прикладного и системного ПО на АРМ.

    Данные поступают от Миньонов с помощью механизма Grains на узел Мастер согласно расписанию, заданному в конфигурации Salt. Мастер публикует их в виде события в канале REST endpoint Events, который прослушивается LCM. Каждое из таких событий содержит технические характеристики по одному из Миньонов, которые актуализируются в БД модуля инвентаризации:

    Параметр в АРМ из ответа SALT Параметр в LCM БД Описание

    id

    machines.minion_id

    Идентификатор Миньона Salt

    nodename

    machines.node_name

    Короткое имя АРМ (NetBIOS name)

    fqdn

    machines.fqdn

    Полное доменное имя АРМ

    fqdn_ip4

    machines.domain_ip

    Набор доменных адресов IPv4

    domain

    machines.domain

    Имя домена

    num_cpus

    machines.cpu_num

    Количество ядер процессора

    cpu_model

    machines.cpu_model

    Модель процессора

    cpuarch

    machines.cpu_arc

    Архитектура процессора

    mem_total

    machines.ram

    Объем ОЗУ

    swap_total

    machines.swap

    Общий физический размер свопинга

    hwaddr_interfaces

    machine_networks.mac

    Физические адреса сетевого оборудования (MAC)

    ip4_gw

    machines.ip4_gw

    Шлюз Ipv4

    ip4_interfaces

    machine_networks.ipv4_list

    Сетевые интерфейсы IPv4

    ip6_interfaces

    machine_networks.ipv6_list

    Сетевые интерфейсы IPv6

    ssds

    machine_disks

    Диски SSD

    disks

    machines.machine_disks

    Диски HDD

    serialnumber

    machines.serial_number

    Серийный номер устройства

    kernel

    machines.kernel

    Ядро ОС

    kernelrelease

    machines.kernel_release

    Релиз ядра ОС

    lsb_distrib_codename

    machines.distrib_codename

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

    lsb_distrib_description

    machines.os_description

    Описание версии ОС

    oscodename

    machines.os_codename

    Код версии ОС

    osarch

    machines.cpu_arc

    Архитектура ОС

    osfullname

    machines.os_fullname

    Полное наименование ОС

    osmajorrelease

    machines.os_major_release

    Мажорная версия релиза ОС

    osrelease

    machines.os_release

    Версия релиза ОС

    saltversion

    machines.salt_version

    Версия Salt на Миньоне

    master

    machines.salt_master

    Имя Мастера Salt

    pythonversion

    machines.python_version

    Версия Python для Salt на Миньоне

    _stamp

    machines.updated_at

    Дата и время актуализации характеристик

    Импорт данных по учётным записям пользователей c сервера LDAP

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

    После синхронизации в БД для модуля инвентаризации (lcm-inventory) в таблицах users и user_groups появляется информация о пользователях домена и их группах:

    Параметр на LDAP-сервере Параметр в БД LCM Описание

    objectGUID

    users.id

    Уникальный идентификатор пользователя

    sAMAccountName

    users.login

    Имя пользователя для входа в систему (Логин)

    userPrincipalName

    users.domain_full_name

    Полное доменное имя пользователя (например ivanov@inno.tech или petrov@samara.vtb.ru)

    userPrincipalName (подстрока)

    users.domain

    Имя домена в короткой форме записи (например inno.tech или samara.vtb.ru)

    mail

    users.email

    Адрес электронной почты

    cn

    users.common_name

    Общее имя пользователя

    name

    users.first_name

    Короткое имя пользователя

    givenName

    users.given_name

    Имя пользователя

    sn

    users.last_name

    Фамилия пользователя

    displayName

    users.display_name

    Отображаемое имя пользователя

    title

    users.title

    Должность пользователя

    department

    users.department

    Отдел, в котором работает пользователь

    company

    users.company

    Подразделение, в котором работает пользователь

    memberOf

    user_groups.group_name

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

    Расписание выполнения синхронизации пользователей

    Синхронизация происходит с помощью встроенного в продукт планировщика задач по расписанию. Управление расписанием осуществляется с помощью параметра в файле application.properties:

    lcm.inventory.job.sync-users.cron.expr=*/5 * * * * ?

    Значением данного параметра выступает выражение cron-like.

    Значение параметра по умолчанию 0 0 12 * * ? соответствует ежедневному запуску задания в 00:00:00. Для выключения задания синхронизации используется значение указанного параметра off:

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

    Синхронизация пользователей может быть осуществлена из нескольких доменов LDAP-сервера и выполняется последовательно. Для задания параметров подключения к каждому из доменов заполните следующий набор параметров группы lcm.inventory.ldap.datasource[i] в файле application.properties:

    # максимальное количество пользователей для одной итерации синхронизации
    lcm.inventory.ldap.search-page-size=500
    
    # Блок параметров подключения к домену номер #1 (нумерация с 0)
    
    # условное обозначение домена
    lcm.inventory.ldap.datasource[0].name=domain_alias1
    # IP адрес или сетевое имя контроллера домена
    lcm.inventory.ldap.datasource[0].host=192.168.0.1
    # Порт для соединения по протоколу LDAP. Опционален, по умолчанию имеет значение `389`.
    # Для LDAP over SSL обычно используют порт 636
    lcm.inventory.ldap.datasource[0].port=636
    # Имя пользователя, которое будет использовано для подключения к домену MS AD.
    # Может иметь следующие форматы
    # 1) <имя_пользователя>@<имя домена>, например ivanov@INNO
    # 2) Пользователь в формате LDAP, например CN=ivanov,CN=Users,DC=inno,DC=local
    lcm.inventory.ldap.datasource[0].username=username1@domain1_name
    # Пароль пользователя для подключения к домену MS AD.
    lcm.inventory.ldap.datasource[0].password=user_password
    # Параметр отвечающий за соединение по протоколу LDAP over SSL (LDAPS).
    # Возможные значения:
    # 1) false - соответствует выключенному протоколу LDAPS, используется обычный LDAP
    # 2) true - соответствует включенному протоколу LDAPS, требует наличие файла с сертификатом для SSL соединения (задается отдельным параметром)
    # 3) trust-all - соответствует включенному протоколу LDAPS, принимает любые сертификаты без подтверждения
    # Опционален, по умолчанию имеет значение `false`
    lcm.inventory.ldap.datasource[0].ssl=true
    # Относительный или абсолютный путь к файлу с сертификатом для подключения через LDAPS.
    # Опционален, по умолчанию имеет значение `certificate.pem`
    # Формат файла с сертификатом SSL и способ его получения описаны ниже
    lcm.inventory.ldap.datasource[0].ssl-certificate=/home/username/cert1.pem
    # Базовое имя домена для поиска пользователей в формате записи LDAP
    lcm.inventory.ldap.datasource[0].base-dn=DC=domain_name1,DC=local
    # Максимальная длительность подключения к LDAP серверу в миллисекундах. Значение `0` означает бесконечное ожидание.
    # Опционален, по умолчанию имеет значение `10000`
    lcm.inventory.ldap.datasource[0].connect-timeout-millis
    # Максимальная длительность выполнения запроса к LDAP серверу в миллисекундах. Значение `0` означает бесконечное ожидание.
    # Опционален, по умолчанию имеет значение `10000`
    lcm.inventory.ldap.datasource[0].response-timeout
    # Параметр отвечает за освобождение соединения в случае превышения максимальной длительности ожидания запроса.
    # Возможные значения `true` и `false`
    # Опционален, по умолчанию имеет значение `true`
    lcm.inventory.ldap.datasource[0].abandon-on-timeout
    # Указывает, разрешать ли использование экземпляра фабрики сокетов (который может совместно использоваться несколькими соединениями)
    # для одновременного создания нескольких сокетов. Как правило, реализации фабрики сокетов являются потокобезопасными
    # и могут создавать несколько соединений одновременно в отдельных потоках, но известно, что это не так в некоторых
    # реализациях виртуальных машин (например, фабрики сокетов SSL в IBM JVM). Этот параметр может использоваться, чтобы указать,
    # следует ли разрешить одновременные попытки создания сокета (что может обеспечить лучшую и более стабильную производительность,
    # особенно в случаях, когда попытка подключения не удалась из-за тайм-аута) или предотвратить (что может быть необходимо для
    # непотокового реализации фабрики сокетов)
    # Возможные значения `true` и `false`
    # Опционален, по умолчанию имеет значение `true`
    lcm.inventory.ldap.datasource[0].allow-concurrent-socket-factory-use
    
    # Блок параметров подключения к домену номер #2
    lcm.inventory.ldap.datasource[1].name=domain_alias2
    lcm.inventory.ldap.datasource[1].host=192.168.0.2
    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
    
    # Блок параметров подключения к домену номер #3
    lcm.inventory.ldap.datasource[2].name=domain_alias2
    #...

    Импорт данных о связи пользователей и устройств из CSV-файла

    Модуль инвентаризации позволяет импортировать в БД LCM информацию о связи пользователей и устройств посредством загрузки данных из CSV-файла через пользовательский интерфейс администратора (см. документ «Руководство администратора»). CSV-файл должен быть определенного формата: содержать 3 столбца и в качестве разделителя использовать точку с запятой ; определенного формата:

    <operation>;<user_name>@<user_domain>;<fqdn>

    Где:

    1. Параметр первого столбца operation должен содержать одну из следующих команд (перечислены в порядке приоритета выполнения):

      1. R — (от англ.: remove) удалить связь между пользователем и устройством.

      2. RA — (от англ.: remove all) удалить все связи, существующие по указанному пользователю/устройству. Требуется заполнить или логин@домен пользователя, или полное доменное имя машины.

      3. A — (от англ.: add) создать или обновить связь между пользователем и устройством.

    2. Параметр второго столбца user_name должен содержать логин пользователя в указанном домене. Например, aspushkin или fmdostoevskiy.

    3. Параметр второго столбца user_domain должен содержать домен пользователя и соответствовать полному имени домена пользователя, выгруженному с сервера LDAP. Например, inno.tech или saratov.vtb.ru.

    4. Парамер третьего столбца fqdn должен содержать полное доменное имя АРМ, выгруженного из SaltStack, например: kassa256.vtb.ru.

    Пример заполнения файла CSV:

    A;username1@domain.name;notebook1.domain.name
    A;username1@domain.name;notebook2.domain.name
    A;username2@domain.name;notebook1.domain.name
    RA;username1@domain.name;
    RA;username2@domain.name;
    RA;;notebook1.domain.name
    R;username2@domain.name;notebook2.domain.name

    Строки, не соответствующие описанному формату записи, будут проигнорированы.

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

    1. Удаление конкретного пользователя с конкретного АРМ.

    2. Удаление связок по идентификатору пользователя.

    3. Удаление связок по идентификатору АРМ.

    4. Добавление связок.

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

    Создание и обновление коллекций АРМ

    При создании коллекции АРМ имя коллекции должно быть уникально.

    Список АРМ обновляется только при создании или вручную. Для создания/обновления коллекции администратор выполняет SQL-запрос к базе данных через пользовательский интерфейс (подробнее см. Руководство администратора).

    SQL-запрос должен иметь тип select и в списке извлекаемых колонок содержать столбец minion_id.

    При создании SQL-запроса нельзя использовать следующие операторы:

    • drop;

    • alter;

    • create;

    • update;

    • delete;

    • insert;

    • truncate.

    Шаблоны SQL-запросов

    1. Запрос с использованием базовой информации по пользователям и устройствам:

      select m.minion_id
      from users u
      join user_machine_mappings umm on umm.user_fdn = u.full_domain_name
      join machines m on m.fqdn = umm.machine_fqdn
      where <...>
    2. Запрос с использованием подробной информации по устройствам:

      select m.minion_id
      from machines m
      left join machine_disks md on md.minion_id = m.minion_id
      left join machine_networks mn on mn.minion_id = m.minion_id
      where <...>
    3. Запрос с использованием всей информации, доступной в инвентаризации:

      select m.minion_id
      from users u
      join user_machine_mappings umm on umm.user_fdn = u.full_domain_name
      join machines m on m.fqdn = umm.machine_fqdn
      left join machine_disks md on md.minion_id = m.minion_id
      left join machine_networks mn on mn.minion_id = m.minion_id
      where <...>

    Рекомендации по сбору и предоставлению информации о проблеме/ошибке

    В случае возникновения проблемы/ошибки в работе продукта «Служба управления конфигурациями» (LCM):

    1. Предоставьте максимально детальное описание того, в чем заключается проблема/ошибка и в каких условиях она возникла:

      • какие действия выполнялись перед возникновением проблемы/ошибки;

      • какой результат ожидалось получить;

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

      • если проблема возникла при использовании пользовательского интерфейса, если есть техническая возможность, сделайте скриншот/видеозапись экрана, на котором видно некорректное поведение приложения.

    2. Попробуйте воспроизвести проблему/ошибку по составленному описанию.

    3. Если проблема/ошибка возникла один раз и более не воспроизводилась, предоставьте логи на момент возникновения проблемы/ошибки, а также за 30 минут до и после ее возникновения без изменения существующего уровня логирования (см. раздел «Снятие логов»).

    4. Направьте всю собранную информацию контактному лицу.

    Снятие логов

    Логи для продукта снимаются отдельно:

    Сбор логов пользовательского интерфейса

    При некорректной работе пользовательского интерфейса LCM соберите консольные и HAR-логи (логи взаимодействия браузера и сервера во время загрузки веб-страницы) в браузере.

    Пример сбора логов для Яндекс Браузера:

    • HAR-логи

    • Консольные логи

    1. Нажмите F12 на клавиатуре, чтобы открыть окно инструментов разработчика.

    2. Перейдите на вкладку Сеть.

    3. Нажмите на кнопку Запись сетевого журнала.

    4. Воспроизведите проблему.

    5. Нажмите на кнопку Остановить запись сетевого журнала.

    6. Нажмите на правую кнопку мыши в сетевой таблице и выберите Сохранить все как HAR с контентом.

    7. Выберите папку для сохранения логов и нажмите на кнопку Сохранить.

    HAR-логи будут собраны и сохранены в указанной папке.

    1. Нажмите F12 на клавиатуре, чтобы открыть окно инструментов разработчика.

    2. Перейдите на вкладку Консоль.

    3. Нажмите правой кнопкой мыши на любой строке и выберите в контекстном меню Сохранить страницу как.

    4. Выберите папку для сохранения логов и нажмите на кнопку Сохранить.

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

    Пример сбора логов для Chrome:

    • HAR-логи

    • Консольные логи

    1. Нажмите F12 на клавиатуре, чтобы открыть окно инструментов разработчика.

    2. Перейдите на вкладку Network.

    3. Нажмите на кнопку chrome clear, чтобы очистить сетевой журнал.

    4. Выберите чек-боксы Preserve log и Disable cache.

    5. Воспроизведите проблему.

    6. Нажмите chrome export har, чтобы сохранить HAR-логи.

    7. Выберите папку для сохранения логов и нажмите на кнопку Сохранить.

    HAR-логи будут собраны и сохранены в указанной папке.

    1. Нажмите F12 на клавиатуре, чтобы открыть окно инструментов разработчика.

    2. Перейдите на вкладку Console.

    3. Нажмите правой кнопкой мыши в любой области окна и выберите в контекстном меню Save as.

    4. Выберите папку для сохранения логов и нажмите на кнопку Сохранить.

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

    Пример сбора логов для Firefox:

    • HAR-логи

    • Консольные логи

    1. Нажмите F12 на клавиатуре, чтобы открыть окно инструментов разработчика.

    2. Перейдите на вкладку Сеть.

    3. Воспроизведите проблему.

    4. Нажмите на правую кнопку мыши в сетевой таблице после воспроизведения проблемы и выберите Сохранить все как HAR.

    5. Выберите папку для сохранения логов и нажмите на кнопку Сохранить.

    HAR-логи будут собраны и сохранены в указанной папке.

    1. Нажмите F12 на клавиатуре, чтобы открыть окно инструментов разработчика.

    2. Перейдите на вкладку Консоль.

    3. Нажмите правой кнопкой мыши на любой строке и выберите в контекстном меню Экспортировать видимые сообщения в и выберите Файл.

    4. Выберите папку для сохранения логов и нажмите на кнопку Сохранить.

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

    Сбор логов серверной части

    Сбор логов серверной части включает сбор логов бэкенда продукта и логов внешних подсистем (например, SaltStack, LDAP-сервер, MS Active Directory). Подробнее о сборе логов внешних подсистем см. в официальной документации.

    При некорректной работе серверной части LCM соберите логи из лог-файла, путь к которому задается в параметре quarkus.log.file.path.

    Путь к файлу: path/application.log (Подробнее см. руководство по установке раздел «Параметры конфигурации бэкенда продукта»).

    Глоссарий

    Deb-пакет (Debian package)

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

    Har-логи (HTTP Archive logs)

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

    Network Security Services (NSS)

    Набор библиотек, предназначенных для разработки защищённых кросс-платформенных клиентских и серверных приложений. Приложения, построенные при помощи NSS, могут использовать и поддерживать SSLv3, TLS и многие другие стандарты безопасности.

    Network Security Services Database (NSSDB)

    База данных, используемая для хранения сертификатов и ключей шифрования в системах, использующих библиотеку Network Security Services (NSS).

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

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

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

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

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

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

    Сокращения