Руководство оператора#

Данное Руководство оператора предназначено для пользователей, осуществляющих эксплуатацию программного компонента Deploy tools (CDJE).

Термины и определения#

Термин, сокращение

Определение, расшифровка

DPM

DevOps Pipeline Management (управление конвейером DevOps)

OSE

OpenShift Enterprise (открытая контейнерная платформа компании Red Hat)

UI

User interface (интерфейс пользователя)

АФТ

Автоматизированное функциональное тестирование

BH-компонент

Business Hub – часть в дистрибутиве приложения, в которой размещен код (приложение), содержащий бизнес-логику приложения (логика приложения, внешние сервисы, и т.д.)

ULA

Universal Logfile Analyzer – плагин/сервис для автотестов

IAG

Internal API Gateway – Внутренний шлюз

EAG

External API Gateway – Внешний шлюз

NGINX

Engine-X — Веб сервер для высоконагруженных систем

Доступ к приложению#

Доступ к программному компоненту Deploy tools осуществляется с помощью интерфейса Jenkins. У Deploy tools отсутствуют собственные/встроенные механизмы защиты данных и отсутствует интеграция с соответствующими платформенными сервисами (функциональными подсистемами). В процессе создания конечной информационной системы её архитектору/разработчику необходимо самостоятельно выбирать платформенные механизмы защиты данных с учетом требований к уровню конфиденциальности обрабатываемой информации, требований внутренних документов, отраслевых/национальных/международных стандартов, требований уполномоченных регуляторов, национального законодательства и лучших практик. Разработчик должен самостоятельно выбирать меры защиты своего АРМ.

Ролевая модель по доступу к Deploy tools#

В программном компоненте Deploy tools отсутствуют собственные/встроенные механизмы аутентификации пользователей и приложений. Для аутентификации необходимо использовать только собственные платформенные механизмы сервисов Jenkins, GitLab/Bitbucket и Nexus согласно документации на данные сервисы. Таким образом, при работе с Deploy tools варианты аутентификации, настройки аутентификации, типовые сценарии по вопросам, связанным с аутентификацией как пользователей, так и приложений, а также требования по заданию стойких паролей, правил пересмотра и смены пароля должны осуществляться владельцем/администратором инсталляции на стороне выбранных архитектором/разработчиком сервисов в соответствии с эксплуатационной документацией на данные сервисы, применимыми требованиями и рекомендациями корпоративного, отраслевого, национального и международного уровня на данные сервисы и уровнем конфиденциальности обрабатываемой информации.

Доступ Оператора, при работе с программным компонентом Deploy tools осуществляется через интернет браузер и web интерфейс соответствующего платформенного сервиса (в основном, но возможен вызов по API), в связи с чем ему необходимо наличие следующих пререквизитов:

Роль

Категория ПО

Пререквизиты

Оператор сервиса

Хранилище исходного кода

Доступ на просмотр к каталогу, в котором расположен Deploy job.

Доступ на создание/редактирование проектных областей и репозиториев в GitLab/Bitbucket.

Доступ на запись в репозиторий с конфигурацией сервиса.

Доступ на запись в репозитории с параметрами стенда.

ПО для непрерывной интеграции

Доступ на запуск Deploy job.

Доступ на запуск Deploy job обновления инструментов развертывания.

Доступ на просмотр к каталогу, в котором расположены Jenkins jobs.

Доступ на создание/редактирование job в Jenkins.

Платформа приложений-контейнеров

Доступ на просмотр в OpenShift namespace сервиса.

Доступ на создание/редактирование namespace в OpenShift.

Доступ на чтение к серверам WebSphere [Legacy функционал].

Использование приложения оператором#

@startuml

left to right direction
'top to bottom direction

actor "Оператор сервиса" as Arrows


usecase "Обновление инструментов развертывания" as A
usecase "Запуск развертывания сервиса" as B
usecase "Диагностика ошибок развертывания" as C
usecase "Настройка параметров сервиса" as D
usecase "Настройка параметров стенда" as E


Arrows --> A
Arrows --> B
Arrows --> C
Arrows --> D
Arrows --> E

@enduml

Варианты использования Deploy tools оператором, показанные на Диаграмме вариантов использования реализованы в виде двух Jenkins jobs: Deploy job и Service job. Соответствие вариантов использования реализующим их Jenkins job показано в таблице:

Вариант использования

Реализующий Jenkins job

Диагностика ошибок развертывания

Deploy job

Запуск развертывания

Service job

Настройка параметров

Service job + Deploy job

Обновление инструментов развертывания

Service job

Настройка параметров стенда

Service job + Deploy job

Использование Deploy Job#

Deploy job осуществляет:

  • развертывание приложения на сервера WebSphere;

  • развертывание в OSE;

  • импорт параметров приложений;

  • обновление конфигурации инфраструктуры;

  • запуск job АФТ.

Описание сценариев Deploy job:

Наименование сценария (playbook)

Назначение

Входные параметры:
Глобальные настройки (common репозиторий)

Входные параметры:
Настройки в приложении (репозиторий приложения/дистрибутив)

Результаты выполнения

DB_UPDATE

Запуск liquibase скриптов для накатки изменений в БД

sqlReport:"true"/"false"
или
useFpVerification:"true"/"false"

Дистрибутив должен содержать:
…\package\db<директория с архивом>
distrib.yml → секция dbscripts – в ней указан путь до архива file: package/db/data-dictionary-db-app.zip (если имя дистрибутива в приложении будет изменено, но не обновлено в указанном пути будет выведена ошибка) и указан url до базы, используя переменные: jdbc:oracle:thin@{{EFS_DB_HOST}}:{{EFS_DB_PORT}}:{{EFS_DB_NAME}};
secret.yml → содержащий нужные пароли.

3 варианта развертывания на БД:
1. Через приложение верификации - useFpVerification:"true" ;
2. Dry run (генерация SQL отчетов - DryRun) – требует включенного параметра sqlReport:"true" ;
3. Обычная прокатка на базу.

NGINX_DEPLOY

Установка PL-компонентов приложения на группы серверов nginx/nginx_ui. Обычно используется для развертывания статики.

Не требуется

Статика nginx
package\pl\
distrib.yml → секция nginx_files
locations.conf
upstreams.conf
Формат заполнения distrib.yml
Обновление конфигурации нескольких nginx (для nginx_ii, nginx_ui,nginx_mm)

На сервера из группы nginx_ui будет скопирована статика из дистрибутива.

NGINX_II_DEPLOY/NGINX_MM_DEPLOY/
NGINX_EX_DEPLOY/NGINX_BH_DEPLOY/

Установка маршрутов на NGINX IAG
nginx_ii/nginx_mm/nginx_ex/nginx_bh

iag:"true"

distrib.yml
package\conf\global\iag\
package\conf\iag\
package\conf\limits
nginx-iag-routing.json.j2
nginx-iag-service.json.j2
nginx-iag-nodes.json.j2
nginx-iag-limits.fact

На сервера NGINX IAG будут настроены маршруты.

API_MANAGER_UPLOAD

Выгрузка в API менеджер.

Не требуется

package/conf/imports/apiManager/*

Выгрузка данных в API Manager.

WMQ_UPDATE_FP

Создание/обновление объектов WebSphere MQ

Не требуется

package\conf\config\parameters\mq_fp.<fp_name>.conf
package\conf\config\definitions\mq_fp.<fp_name>.json

На серверах MQ созданы очереди.

KAFKA_UPDATE_FP

Создание/обновление объектов Kafka

Не требуется

package\conf\config\parameters\kafka_fp.<fp_name>.conf
package\conf\config\definitions\kafka_fp.<fp_name>.json

На серверах Kafka созданы очереди.

WAS_STOP_SERVER

Остановка сервера WebSphere AS

Не требуется

distrib.yml, секции: applications.deploy_group

Миграция файлов для job автотестирования

WAS_CLEAR_TEMP

Удаление временных файлов WebSphere AS

Не требуется

distrib.yml, секции: applications.deploy_group

На серверах WAS будут очищены директории temp, config/temp .

WAS_FPI_COMMON

Настройка общих параметров WebSphere AS

Не требуется

distrib.yml, секции: applications.config_fp_name
package\conf\config\parameters\websphere.<fp_name>.conf
package\conf\config\definitions\websphere.<fp_name>.json

На сервера WAS будут настроены бщие настройки (jvm и т.п.).

WAS_FPI_INSTALL

Настройка ресурсов приложения на WebSphere AS

Не требуется

distrib.yml, секции: applications.config_fp_name

package\conf\config\parameters\<fp_name>.conf
package\conf\config\definitions\<fp_name>.json

На сервера WAS будут настроены ресурсы для приложения (datasource, wm CF и т.п.).

WAS_FPI_DEPLOY

Установка BH-компонентов приложения на WebSphere AS

Не требуется

package\bh\
distrib.yml, секция applications

На серверах WAS будут установлены приложения из дистрибутива.

WAS_START_SERVER

Запуск сервера WebSphere AS

Не требуется

distrib.yml, секция applications.deploy_group

Запуск серверов WAS

WAS_SMOKE

Запуск smoke тестов

"testsJob": "http://<Jenkins>.ru/job"

distrib.yml, секции:
applications.contextRoot
или
smoke_checks

На серверах WAS будут выполнены smoke тестов из дистрибутива (будут выполнены запросы на REST и поиск по паттернам FAIL/OK).

WAS_RUN_AUTOTEST

Запуск АФТ API

distrib.yml

Не требуется

Запуск Job автотестирование (UI).

WAS_RUN_UI_AUTOTEST

Запуск АФТ UI

Не требуется

Не требуется

Запуск Job автотестирование

MIGRATION_FP_CONF

Миграция конфигурационных файлов приложения

Не требуется

Не требуются

Миграция конфигурационных файлов дистрибутива приложения в репозиторий приложения.
1. Миграция version.conf (заполнение version.conf) в части скриптов.
2. Миграция ветки limits (файла nginx-iag-limits.fact).
3. Миграция конфигурационных файлов дистрибутива приложения.

MIGRATION_AFT_CONF

Миграция тестовых данных приложения и настроек АФТ

Не требуется

Не требуется

Миграция тестовых данных приложения и настроек АФТ.

FP_CONF_CHECK

Проверка конфигурационных файлов приложения

Не требуется

Не требуются

fp_conf_check , проверка конфигурации дистрибутива приложения

При включенном параметре sqlReport:"true" происходит генерация отчета liquibase для последующей прокатки сценария (playbook) DB_UPDATE.

NGINX_EAG_UPLOAD

Выгрузка в Реестр сервисов

Не требуется

Не требуется

Выгрузка в Реестр сервисов.

OPENSHIFT_CHECK

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

Не требуется

Не требуется

Проверка доступности установки в OpenShift.

OPENSHIFT_UPDATE_REPLICAS

Изменение установленного количества реплик в OpenShift

Не требуется

Не требуется

Изменение установленного количества реплик в OpenShift.

OPENSHIFT_INGRESS_EGRESS_DEPLOY

Установка ingress/egress в OpenShift

Не требуется

Не требуется

Установка ingress/egress в OpenShift.

DEBUG

Режим Debug для Jenkins job

Не требуются

Не требуются

Расширенный вывод логов Ansible прокатки Jenkins job.

Использование Service job#

Service job осуществляет миграцию кодовой базы Pipeline на стенд и общих параметров Common репозитория на стенд.

Описание сценариев Service job:

  1. MERGE — миграция кода/библиотек Pipeline, Scheduler, а так же миграция файла environment_<segment>.json / миграция общих настроек среды / миграция кода/библиотек Pipeline автотестов.

  2. MIGRATION_SUBSYSTEMS — миграция файла subsystems_<segment>.json.

  3. JOBS_RECONF_ALL — реконфигурация нескольких Jenkins jobs.

  4. WAS_FPI_UTIL_JOB_CONF — реконфигурация Jenkins job.

  5. MERGE_COMMON_REPO — схлопывание (миграция) блочных репозиториев в общий.

  6. SOFT_COMMON_MIGRATION — аналогично стандартной миграции Common, за исключением того, что изменения не сразу переносятся в ветку, а создается Pull Request с набором изменений, которые были произведены в результате миграции.

Часто встречающиеся вопросы и пути их устранения#

Полноценной и обширной базы знаний по ошибкам эксплуатации не накоплено.

Ошибки настройки#

При настройке Service job и Deploy job может появиться ошибка (см. рис. ниже).

Эта ошибка возникает при отсутствии доступа при обращении ТУЗ к репозиторию в GitLab/Bitbucket. В этом случае необходимо проверить наличие доступа к репозиторию обратившись в службу support, сопровождающую вашу инсталляцию GitLab/Bitbucket.

Ошибки инфраструктуры#

Ошибка, возникающая при взаимодействии с Nexus (см. рис. ниже).

В этом случае необходимо проверить наличие доступа к репозиторию обратившись в службу support, сопровождающую эксплуатируемую инсталляцию Nexus.

Параметры настройки#

environment.json#

Интеграция окружения с Deploy tools осуществляется с помощью задания параметров настроек, указываемых в файле environment.json. Файл environment.json находится в репозитории с common.

Содержание файла environment.json выглядит следующим образом (описания параметров указаны в закомментированных строках):

    {"!__default": {                                                        // Блок с настройками по-умолчанию. В ЭТОМ БЛОКЕ НИЧЕГО ПРАВИТЬ НЕ НУЖНО -- ОН ПОСТОЯННО ОБНОВЛЯЕТСЯ И ПЕРЕТИРАЕТСЯ
    "deployStages" : [                                                      // Этапы развертывания, При совпадении запущенных в текущей сборке сценариев (playbooks) с одним из элементов, запускаются функциональности отправки в объективный мониторинг, проброс заголовков при скачивании дистрибутива
        ["WAS_FPI_DEPLOY", "DB_UPDATE"],
        ["WAS_FPI_DEPLOY"]
        OR
        "WAS_FPI_DEPLOY",
        "DB_UPDATE"
    ],
    "doNotCheckInventoryOnNull": "false",                                   // Флаг включения/выключения скипа проверки инвентори на пустоту (при true - инвентори может быть пустым, при false будет падать с ошибкой, если пустой)
    "forcePreCheck": "true",                                                // Флаг вкл/выкл режима принудительного PreCheck с падением шаблонизатора в случае наличия не раскрытых параметров
    "openshiftDeploySafeMode": "false",                                     // флаг провекри иммутабельности критичных полей openshift-конфигов istio
    "openShiftPrecheck": "warning",                                         // флаг включения/выключения валидации конфигов дистрибутива openshift; fail/warning/off-режимы
    "openshiftCheckConfNames": "warning",                                   // флаг включения/выключения валидации именов .conf-файлов; fail/warning/off-режимы
    "bluegreen":"false",                                                    // Флаг использования blue-green развертывания, по умолчанию – false, если – true - в Jenkins job появится отмеченный USE_BLUEGREEN
    "approveGreen": "false",                                                // Флаг подтверждения перед запуском – green, по умолчанию – false, если – true, то после завершения установки на blue-хостах и перед запуском на green будет выведено подтверждение
    "openShiftNewPasswords"                                                 // "<переключатель(true/false) механизма разделения паролей OpenShift от сферы>. При активации этого флага, пароль для расшифровки _passwords.conf будет браться из credentials.openshiftOpsPasswordsCred(ниже по списку)"
    "openshiftMultiClusters"                                                // "<переключатель (true/false) механизма для работы с несколькими кластерами. При активации часть параметров OpenShift будет браться из файла multiClusters.json>"
    "openshiftNginx"                                                        // "<переключатель(true/false) механизма балансировки трафика из nginxIAG в OpenShift>"
    "openshiftSecretsFilters"                                               // "<переключатель(true/false) механизма разукрупнения секретов – установка только нужных секретов, описанных в distrib.yml>"
    "credentials": {
         "openshiftOpsPasswordsCred": "...",                                // "<пароль для дешифрования _passwords.conf openssl>. Используемый алгоритм openssl = aes-256-cbc"       // Далее — Блок с параметрами учетной записи/записей (credentials)
         "SshKeyCreds"         : "_template_",                              // Credential ID для доступа в репозитории Git с использованием ssh-ключей (ssh ключ)
         "UserPassCreds"       : "_template_",                              // Credential ID для доступа в хранилище Nexus с использованием base аутентификации (логин/пароль)
         "ZabbixCred"          : "registry_user_cred",                      // Credential ID для доступа к API Zabbix
         "shiftDeployJobCred"  : "user_pass_tech",                          // Credential ID для Jenkins job развертывания приложения в контейнере (логин/пароль)
         "shiftDeployJobToken" : "user_pass_tech",                          // Credential ID для job развертывания приложения в контейнере (Authentication Token)
         "testJobCred"         : "85618fbf-6aac-4c69-be1d-d1fd1895d189",    // Credential ID для job АФТ (логин/пароль)
         "testJobToken"        : "token_tech",                              // Credential ID для job АФТ (Authentication Token)
         "ansible_vault_id"    : "e8cfbea7-f1dd-4e3e-85db-0e7caa33b449",    // Credential ID для файла ansible-vault (secret.yml)
         "ansible_vault_id"    : "dQw4w9WgXcQ",                             // Credential ID для файла ansible-vault (secret_ops.yml)
         "jenkinsQAkitCred"    : "85618fbf-6aac-4c69-be1d-d1fd1895d189",    // Credential ID для Jenkins job закрытия тикета на тестирование (логин/пароль)
         "jenkinsToken"        : "token_tech",                              // Credential ID для Pipeline AD job (Authentication Token)
         "jenkinsCred"         : "tech_creds",                              // Credential ID для job - Pipeline AD (логин/пароль)
         "oggSecretVaultCred"  : "vault_ogg_secret"                         // Credential ID для Pipeline OGG jov (токен для доступа к операции управления процессами OGG)
    },
    "requiredSectorIdInSubsystem": "true",                                  // Специально для клиента включает обязательное переопределение sectorId для каождого приложения в subsystems.json
    "cloneRepoViaBash": "false",                                            // false - выкачка файлов из битбакета через плагин, true - pfuheprf файлов из GitLab/Bitbucket через комманду
    "enableFastGit": "false",                                               // когда true, включается shallow clone и прочие логики на ускорение выкачивания файлов из GitLab/Bitbucket
    "propsPlaceholdersCompatability": "true",                               // false - выключение преобразования и раскрытия legacy placeholders ${} в процессе шаблонизации
    "sup2LegacyRequired": "true",                                           // Переключатель, отвечающий за загрузку в PACMAN (CFGA). false - отключение загрузки в PACMAN (CFGA)
    "sup2ApproveTimeout": 300,                                              // Время ожидания (сек) ответа от администратора с правами на build, при неуспешном импорте в PACMAN (CFGA). При значении 0, модальное окно не появится.
                                                                            // SSH GIT путь до репозитория с белым спиской версий допущеных к установке. Если не задано, то функционал белых списков выключен.
    "efsReleaseDistribRepo"      : "ssh://<bitbucket_address>/efs_releases",
                                                                            // Ветка в текущем репозитории. Eсли не задано, но задано efsReleaseDistribRepo , то по умолчанию считать "master"
    "efsReleaseDistribBranch"    : "master",
                                                                            // Файл в в текущем репозитории. Если не задано, но задано efsReleaseDistribRepo, будет выводиться ошибка.
                                                                            // Согласованная структура файла: https://<projects_address>/DEVOPSEFS/repos/efs_releases/browse/psi.yaml
    "efsReleaseDistribFile"      : "psi.yml",
    "acl_common" : []                                                       // Список пользователей, для доступа к редактированию ропозиториев Common через UI-admin. Пустое значение указывает на запрет всем.
    "alpha": {                                                              // Блок значений по-умолчанию для домена Альфа (например, домен указывается в common.conf.yml в параметре domain либо переопределяется в jenkins.env.SEGMENT)
      "nexus_host": "https://<nexus_address>"                               // Адрес хранилища nexus для выбранного сегмента сети (анпример alfa)
    },
    "sigma": {
      "nexus_host": "<nexus_host_address>",
      "serviceRegistry": "false"                                            // Параметр, который отключает функцию выгрузки в реестр сервисов, по-умолчанию функция включена)
    },
    "psidss": {
      "nexus_host": "<nexus_host_address>",
      "gitBaseUrl": "http://<psidss-bitbucket_address>"                     // Адрес Git'a для сети psidss
    },
    "playbooks_default":{                                                  
      "default": ["WAS_SMOKE"],                                             // Списки сценариев (playbooks) по умолчанию
      "marker": ["WAS_SMOKE"]                                               // Списки сценариев (playbooks) по умолчанию с созданием флагов
    },
    "atVersionFlags":{                                                      // Настройки получения версии дистрибутива АФТ из флагов
      "parentEnv": "dev",                                                   // Стенд, во флагах которого будет осуществлён поиск версии дистрибутива АФТ
      "api": ["smoke", "smart_regress", "nf"],                              // Префикс флагов, в которых будет осуществлён поиск версии API-тестов
      "ui": ["smoke_ui"]                                                    // Префикс флагов, в которых будет осуществлён поиск версии UI-тестов
    },
    "qgFlags": {                                                            // Настройки флагов QG
      "bvt": {                                                              // Префикс имени флага, к нему будет добавлено 'ok' или 'err'
        "checkStages": ["WAS_SMOKE"],                                       // Наименование стейжа (либо списка stages), который должен завершиться успешно для размещения флага 'ok'
        "stand": "bar"                                                      // Стенд/перечень стендов, для которых будет установлен данный QG-флаг
      },
      "smoke": {
        "checkStages": ["AFT_RUN_SMOKE"],
        "stand": ["ift", "psi"]
      },
      "smoke_ui": {
        "checkStages": ["AFT_RUN_UI"],
        "stand": ["ift", "psi"]
      },
      "smart_regress": {
        "checkStages": ["AFT_RUN_SMOKE"],
        "stand": ["msv", "ift", "psi"]
      },
      "nf": {
        "checkStages": ["AFT_RUN_SMOKE"],
        "stand": ["ift", "psi"]
      }
   },
    "manual_qa": {                                                          // Название флагов для Pipeline Manual QA job (данные флаги доступны только на средах ИФТ и ПСИ)
        "ift": "qa",
        "psi": "uat"
    },
    "ULA": {                                                                // Реквизиты ULA
      "groupId": "Nexus_PROD",
      "artifactId": "CI01120794_ULA",
      "version": "1.*",
      "classifier": "distrib",
      "packaging": "jar",
      "ula_url": "http://<ula_address>"
    },
    "servicePeriods": {                                                     // Технологические окна (для работы Pipeline Scheduler)
      "Пн": ["00:00-07:00", "12:30-14:00"],
      "Вт": ["00:00-07:00", "12:30-14:00", "17:00-19:00"],
      "Ср": ["00:00-07:00", "17:00-19:00"],
      "Чт": ["12:30-14:00", "17:00-19:00"],
      "Сб": ["00:00-07:00"],
      "Вс": ["12:30-14:00"],
    },
    "nginxParallel": "false",                                               // Запуск ролей развертывания на NGINX в параллель                                    
    "schedullerArtifatCheckLimit": 5,                                       // Кол-во версий дистрибутива приложения, которые будут проверены для установки в Pipeline Scheduler
    "emailList": [ "personal_email@mail.<domain>.ru" ],                      // Fдреса рассылок отчётов работы Pipeline Scheduler
    "nexus_host"          : "<nexus_host_address>",                         // Адрес хранилища Nexus по умолчанию
    "nexus_repo"          : "Nexus_PROD",                                   // Репозиторий в хранилище Nexus
    "nexus_timeout"       : 60,                                             // Nаймаут запросов в Nexus , сек
    "playbook_ssd"        : "playbook_fpi.yml",                             // Название файла-сценария (playbook) для скриптов
    "playbook_ssd_security": "playbook_fpi_security.yml",                   // Название файла-сценария (playbook) для скриптов Security job
    "securityInventory"   : "UTIL_SECURE",                                  // Название inventory для security pipeline
    "jdk"                 : "JDK_1.7_45_Linux",                             // JDK на jenkins slave (общая)
    "jdkAt"               : "jdk8",                                         // JDK на jenkins slave для АФТ
    "mvnAt"               : "Maven 3.3.9",                                  // Maven на jenkins slave для АФТ
    "iag"                 : "true",                                         // Если "true", то в меню pipeline появляется список выбора репозитория с конфигами "current", "last", "previous"
    "jenkinsQAkit"        : "http://<jenkins_address>/job/OPIR/job/SRV/job/SPCloseTicket",                  // URL job закрытия тикета на тестирование
    "testsJob"            : "http://localhost/atJob",                                                       // URL АФТ job
    "testsJobMvn"         : "http://localhost/atJobMvn",                                                    // URL АФТ 2.0 (maven) job
    "testsJobSpo"         : "http://localhost/atJobSPO",                                                    // URL АФТ job для SPO job (EDOIN-2521)
    "maxLogSize"          : 500,                                                                            // Максимальный размер лога (Mb). В случае превышения, работа Pipeline будте прервана
    "addMarker"           : "false",                                                                        // Включение/выключение добавления маркера в Nexus
    "jobLogCopy"          : "false",                                                                        // Копирование каталога ANSIBLE_LOG на сервер логирования
    "ticketID"            : "false",                                                                        // Если "true", то в параметрах Jenkins job будет erfpfy TICKET_ID (нужен для полигона стирования)
    "idParentStand"       : "null",                                                                         // Стенд, маркер успешного прохождения которого требуется (если null, то отключено)
                                                                                                            // Можно указать только префикс -- тогда будет осуществлён поиск маркера <постфикс>*.ok, либо указать Название флага полностью(bvr_ok.flag)
    "ignoreErors"         : "false"                                                                         // Если "true", то будут игнорироваться ошибки ansible-ролей
    "dpLibUrl"            : "ssh://<bitbucket_address>/commonlib/pipeline_gateways_lib.git",                // Для обновления DataPower. Путь к репозиторию библиотеки, представляемой отделом шлюзовых решений
    "dpAnsibleGitUrl"     : "ssh://<bitbucket_address>/COMMONLIB/ansible_dp_roles.git",                     // Для обновления DataPower. Путь к репозиторию роли Ansible, представляемой отделом шлюзовых решений
    "dpVarsFiles"         : "vars_dp.yml vars_con.yml secret.yml",                                          // Для обновления DataPower. Список конфигурационных файлов для настройки процесса обновления IBM Data Power
    "use_lieberman"       : "false"                                                                         // Для обновления DataPower. Переключение режимов использования источников шифрованных учетных данных Lieberman/ansible secret (по умолчанию secret.yml)
    "nexusMavenMetadataAuth": "false",                                                                      // Отключение авторизации для maven-metadata.xml
    "schedullerArtifatCheckLimit": 10,                                                                      // Лимит на поиск успешных версий в планировщике
    "bwListRepoUrl": "ssh://<bitbicket_address>/ci00428440/ci00380023_efs_black_white_lists.git",           // Репозиторий с глобальными черно/белыми списками
    "bwListRepoBranch" : "develop",                                                                         // Ветка из которой должны браться глобальные черные/белые списки
    "bwCheckMode" : "off",                                                                                  // Режим работы глобальных ч/б списков, подробнее о них можно прочитать по ссылке (см. ссылку в конце страницы)
    "useMavenForDownload": "false",                                                                         // Переключение выгрузки установщика на maven. Если выключен - будет выгружаться по rest-запросу. Выгрузка зависимых дистрибутивов (например, разделение common) возможно лишь с включением этого параметра
    "nexus.plugins.repo.url": "https://<nexus_address>/content/repositories/Nexus_PROD/",                   // Репозиторий в котором хранятся плагины maven (используется только если useMavenForDownload = "true")
    "nexus.repo.url": "https://<nexus_address>/content/repositories/Nexus_PROD/",                           // Репозиторий, в котором хранятся дистрибутивы (используется только если useMavenForDownload = "true")
    "installerOutput": "./",                                                                                // Локальный путь для распаковки установщика (используется только если useMavenForDownload = "true")
    "distrOutput": "./ansible/tmp/nexus",                                                                   // Локальный путь для распаковки дистрибутива (используется только если useMavenForDownload = "true")
    "platform": {                                                                                           // Соотвествие версии платформы версиям "curr", "last", "prev"
      "curr": "R18.3",
      "last": "R18.5",
      "prev": ""
    },
    "smsEnable": "true",                                                                                    // Если данный параметр включен, то происходит отправка СМС-уведомления ПОСЛЕ сборки
    "smsPlaybooks": ["NGINX_DEPLOY", "WAS_FPI_DEPLOY"],                                                     // Список сценариев (playbooks), по которым требуется отправка СМС уведомлений
    "smsInitReport" : "true",                                                                               // Если данный параметр включен, то происходит отправка СМС-уведомления ДО сборки
    "zabbix_suppress" "false",                                                                              // Если параметр включен, то происходит подавление событий Zabbix при деплое на WAS
    "platformVersionCheckMode": "false",                                                                    // Если данный параметр включён, то в случае несоответсвия версии платформы из файла ci00380023_efs_releases с той, которая выбрана в Jenkins job, установка будет прервана.
                                                                                                            // "warningCheck" -- только warning, "failedCheck" -- failed
                                                                                                            // Может принимать значения ['false', 'warningCheck', 'failedCheck']
    "ogg_block_names": [                                                                                    // Список блоков для Pipeline OGG jobs
      "arch1",                                                                                              // Первичная миграция конфигурационных файлов для репозитория "ci00380023_efs_<channel>_golden_gate_<envir>.conf"
      "b1",                                                                                                 // производится для всех блоков из этого списка.
      "b2",                                                                                                 
      "si1"                                                                                                 
    ],
    "jaas_keys_overwritre": "true",                                                                         // Разрешить запись JAAS в файл паролей в репозиторий Common.
                                                                                                            // При отсутствии переменной или наличии переменной со значением "false" сценарий (playbook) завершает работу.
    "efsReleaseRepo": "https://<bitbucket_project_address>/CI00428440/repos/ci00380023_efs_releases",       // Репозиторий с соответствиями версий дистрибутивов приложения с версиями платформы
    "efsReleaseBranch": "master",                                                                           // Ветка репозитория с соответствиями версий дистрибутивов приложений с версиями платформы
    "preventRemoteJobStart":"false"                                                                         // Запрет на удаленный вызов Deploy job, минуя пользовательский интерфейс Jenkins (через REST API Jenkins)
    "remoteJobStartTimeout":5                                                                               // Минимальное время необходимое для запуска job из интерфейса Jenkins
    "envFastSecureRole": "false",                                                                           // Параметр для автивации режима быстрого развертывания Security job
    "installer"           : {                                                                               // Реквизиты AENG в хранилище Nexus
       "common": {
              "groupId": "Nexus_PROD",
              "artifactId": "CI01027901_AS_EFS_Installer.Common",
              "version": "D-01.001.00-*",
              "classifier": "distrib",
              "packaging": "zip"
            },
        "migration": {
              "groupId": "Nexus_PROD",
              "artifactId": "CI01027846_AS_EFS_Installer.Migration",
              "version": "D-01.001.00-*",
              "classifier": "distrib",
              "packaging": "zip"
            },
    "playbooks_fpi": {                                                                                        									// Сценарий (playbook) для Pipeline AutoDeploy
        "DB_UPDATE"                         : {"id": 1, "description": "Запуск liquibase скриптов"},          									// id – порядковый номер в списке сценариев в меню pipeline
        "NGINX_DEPLOY"                      : {"id": 2, "description": "Установка PL-компонентов приложения на группы серверов nginx/nginx_ui"},
        "NGINX_II_DEPLOY"                   : {"id": 3, "description": "Установка PL-компонентов приложения на группу серверов nginx_ii"},
        "NGINX_MM_DEPLOY"                   : {"id": 4, "description": "Установка PL-компонентов приложения на группу серверов nginx_mm"},
        "WMQ_UPDATE_FP"                     : {"id": 5, "description": "Создание/обновление объектов WebSphere MQ"},
        "WAS_FPI_XS_GRID_DEPLOY"            : {"id": 6, "description": "Установка XS grid на WebSphere XS"},
        "WAS_STOP_SERVER"                  : {"id": 7, "description": "Остановка сервера WebSphere AS"},
        "WAS_CLEAR_TEMP"                    : {"id": 8, "description": "Удаление временных файлов WebSphere AS"},
        "WAS_FPI_COMMON"                    : {"id": 9, "description": "Настройка общих параметров WebSphere AS"},
        "WAS_FPI_INSTALL"                   : {"id": 10, "description": "Настройка ресурсов приложения на WebSphere AS"},
        "WAS_FPI_DEPLOY"                    : {"id": 11, "description": "Установка BH-компонентов приложения на WebSphere AS"},
        "WAS_START_SERVER"                 : {"id": 13, "description": "Запуск сервера WebSphere AS"},
        "WAS_SMOKE"                         : {"id": 14, "description": "Запуск smoke тестов"},
        "WAS_RUN_AUTOTEST"                  : {"id": 15, "description": "Запуск АФТ(smoke)"},
        "WAS_RUN_UI_AUTOTEST"               : {"id": 21, "description"  "Запуск АФТ(ui)"},
        "VERSION_SNAPSHOT_SEARCH"           : {"id": 16, "description": "Проверка наличия SNAPSHOT модулей в дистрибутиве приложения"},
        "MIGRATION_FP_CONF"                 : {"id": 17, "description": "Миграция конфигурационных файлов приложения"},
        "MIGRATION_AFT_CONF"                : {"id": 18, "description": "Миграция тестовых данных приложения и настроек АФТ"},
        "UPDATE_DP"                         : {"id": 19, "description": "Обновление DataPower"},
        "DEPLOY_TO_OPENSHIFT"               : {"id": 20, "description": "Развертывание приложения в контейнере"},
        "OPENSHIFT_INGRESS_EGRESS_DEPLOY"   : {"id": 21, "description" "Установка ingress/egress в OpenShift"},
        "OPENSHIFT_EXTRACT_DUMP"            : {"id": 22, "description": "Выгрузка дампов из Openshift POD's"},
        "OPENSHIFT_INGRESS_DEPLOYMENT"      : {"id": 23, "description": "Установка ingress Deployment в OpenShift"},
        "OPENSHIFT_INGRESS_SERVICE"         : {"id": 24, "description": "Установка ingress Service в OpenShift"},
        "OPENSHIFT_INGRESS_GATEWAY"         : {"id": 25, "description": "Установка ingress Gateway в OpenShift"},
        "OPENSHIFT_INGRESS_ENVOYFILTER"     : {"id": 26, "description": "Установка ingress EnvoyFilter в OpenShift"},
        "OPENSHIFT_INGRESS_VIRTUALSERVICE"  : {"id": 27, "description": "Установка ingress VirtualService в OpenShift"},
        "OPENSHIFT_INGRESS_ROUTE"           : {"id": 28, "description": "Установка ingress Route в OpenShift"},
        "OPENSHIFT_INGRESS_DSR"             : {"id": 29, "description": "Установка ingress DestinationRule в OpenShift"},
        "OPENSHIFT_EGRESS_DEPLOYMENT"       : {"id": 30, "description": "Установка egress Deployment в OpenShift"},
        "OPENSHIFT_EGRESS_SERVICE"          : {"id": 31, "description": "Установка egress Service в OpenShift"},
        "OPENSHIFT_EGRESS_GATEWAY"          : {"id": 32, "description": "Установка egress Gateway в OpenShift"},
        "OPENSHIFT_EGRESS_SERVICEENTRY"     : {"id": 33, "description": "Установка egress ServiceEntry в OpenShift"},
        "OPENSHIFT_EGRESS_VIRTUALSERVICE"   : {"id": 34, "description": "Установка egress VirtualService в OpenShift"},
        "OPENSHIFT_EGRESS_ENVOYFILTER"      : {"id": 35, "description": "Установка egress EnvoyFilter в OpenShift"},
        "OPENSHIFT_EGRESS_DSR"              : {"id": 36, "description": "Установка egress DestinationRule в OpenShift"},
        "OPENSHIFT_ISTIO_SECRETS"             : {"id": 37, "description": "Установка istio сертификатов в OpenShift"},
        "OPENSHIFT_DEPLOY_DC"               : {"id": 38, "description": "Установка deploymentConfigurations (не istio)"},
        "OPENSHIFT_DEPLOY_SVC"              : {"id": 39, "description": "Установка Services (не istio)"},
        "OPENSHIFT_DEPLOY_HPA"              : {"id": 40, "description": "Установка HPA (не istio)"},
        "OPENSHIFT_DEPLOY_ROUTE"            : {"id": 41, "description": "Установка Routes (не istio)"},
        "OPENSHIFT_DEPLOY_SECRETS"          : {"id": 42, "description": "Установка Secrets (не istio)"},
        "OPENSHIFT_DEPLOY_CONFIGMAPS"       : {"id": 43, "description": "Установка Configmaps (не istio)"}

    },
    "playbooks_security": {                                                                                          // Сценарий (playbook) для Pipeline Security
        "WAS_STOP_SERVER"                  : {"id": 1, "description": "Остановка сервера WebSphere AS"},
        "WAS_FPI_UTIL_LDAP2"                : {"id": 2, "description": "Настройка LDAP на WebSphere AS"},
        "WAS_FPI_UTIL_ADMIN_ROLE"           : {"id": 3, "description": "Настройка административных ролей WebSphere AS"},
        "WAS_FPI_UTIL_LTPA_GENERATE_KEYS"   : {"id": 4, "description": "Генерация LTPA ключей"},
        "WAS_FPI_UTIL_LTPA_EXPORT_KEYS"     : {"id": 5, "description": "Экспорт LTPA ключей WebSphere AS"},
        "WAS_FPI_UTIL_LTPA_CONFIG"          : {"id": 6, "description": "Настройка LTPA хранилища WebSphere AS"},
        "WAS_FPI_UTIL_LTPA_IMPORT_KEYS"     : {"id": 7, "description": "Импорт LTPA ключей в WebSphere AS"},
        "WAS_FPI_UTIL_MODIFY_WMQCF"         : {"id": 8, "description": "Обновление конфигурации WebSphere MQ"},
        "WAS_FPI_UTIL_COPY_FILES"           : {"id": 9, "description": "Копирование файлов на WebSphere AS"},
        "WAS_FPI_UTIL_SSL"                  : {"id": 10, "description": "Настройка SSL WebSphere AS"},
        "WAS_FPI_UTIL_DEL_RES"              : {"id": 11, "description": "Удаление ресурсов WebSphere AS"},
        "WAS_START_SERVER"                 : {"id": 14, "description": "Запуск сервера WebSphere AS"},
        "WMQ_CONFIG"                        : {"id": 15, "description": "Настройка WebSphere MQ"},
        "MIGRATION_COMMON_CONF"             : {"id": 16, "description": "Миграция общих настроек"},
        "OPENSHIFT_CERT_UPDATE"             : {"id": 17, "description": "Массовое обновление секретов"},
        "OPENSHIFT_DEL_RES"                 : {"id": 18, "description": "Удаление ресурсов в openshift"},
        "OPENSHIFT_CHECK_CERTS"             : {"id": 19, "description": "Проверка срока истечения указанных сертификатов"}

    },
    "playbooks_extra": {            // Сценарий (playbook) для Pipeline Deploy и Pipeline Security
        "DEBUG"                     : {"id": 1, "description": "Debug режим"},
        "WAS_FPI_UTIL_CLEARING"     : {"id": 2, "description": "Принудительная остновка задач деплоя на WebSphere AS" },
        "WAS_FPI_UTIL_JOB_CONF"     : {"id": 3, "description": "Перенастройка Jenkins job"},
        "DELETE_LOCK_FILES"         : {"id": 4, "description": "Удалить lock-файлы"},
        "WAS_IGNORE_LOCK"           : {"id": 5, "description": "Игнорировать lock-файлы"},
        "FP_CONF_CHECK"             : {"id": 6, "description": "Проверка конфигурационных файлов приложения" },
        "JOB_LOG_COPY"              : {"id": 7, "description": "Копирование лога выполнения Jenkins job на удалённый сервер"},
        "NGINX_CONF_RELOAD"         : {"id": 8, "description": "Перезапуск сервера nginx"},
        "ANSI_COLOR_DISABLE"        : {"id": 9, "description": "Отключить цветной вывод логов в консоли Jenkins"},
 },
    "playbooks_service": {                                                                                   // Сценарий (playbook) для Pipeline Service
        "MIGRATION_PPL_DEPLOY"      : {"id": 1, "description": "Миграция библиотек и скриптов Pipeline AD"},
        "MIGRATION_PPL_AT"          : {"id": 2, "description": "Миграция библиотек и скриптов Pipeline AT"},
        "MIGRATION_SUBSYSTEMS"      : {"id": 3, "description": "Миграция файла subsystems.json"},
        "WAS_FPI_UTIL_JOB_CONF"     : {"id": 4, "description": "Перенастройка Jenkins job"}
   },
    "playbooks_custom": {
        "DEFAULT_PLAYBOOKS_ENV"         : {"id": 13,"description": "Запустить сценарии по умолчанию для среды"},
        "DEFAULT_PLAYBOOKS_ENV_FLAG"    : {"id": 14,"description": "Запустить сценарии по умолчанию для среды с отбрасыванием флага"},
        "DEFAULT_PLAYBOOKS_FP"          : {"id": 15,"description": "Запустить сценарии по умолчанию для приложения"},
        "DEFAULT_PLAYBOOKS_FP_FLAG"     : {"id": 16,"description": "Запустить сценарии по умолчанию для приложения с отбрасыванием флага"}
 },
  "marker_success_playbooks"     : ["DB_UPDATE", "NGINX_DEPLOY"],                               			
                                 // Сценарии, при успешном прохождении которых будет создан маркер "ОК" (DEPRECATED!)
 "subsystemSuffixToSectorId": {}                                                                			 // DEPRECATED см. https://<address>/display/BSIDO/subsystems.json
  },
  "dev_test" : {                                                                                			 // Настройки среды "dev_test". Параметры, указанные в данном блоке, будут перекрывать параметры по умолчанию
    "jdk"                 : "JDK_1.7_45_Linux"     
    "credentials"{             
        "SshKeyCreds"         : "099f4671-d96e-4a7e-979e-48e78d9a5c40",
        "UserPassCreds"       : "d72d56be-f76c-40b9-93f4-5cde75fac700",
        "ansible_vault_id"    : "e8cfbea7-f1dd-4e3e-85db-0e7caa33b449",
        "openssl_cipher"      : "aes-256-cbc"                                                   											// Способ шифрования файла _password.conf. Необязательное поле - при его отсутствии по умолчанию используется aes-256-cbc


    },
    "playbooks_default":{                                                                       											// Списки сценариев по умолчанию для среды dev_test
      "default": ["WAS_SMOKE"],                                            
      "marker": ["WAS_SMOKE"]
    },
    "wlVersions"          : ["20572f4cce8", "6b34cf3355b", "e7b57628s8ab"],                     											// Список разрешённых версий скриптов efs_scripts
    "playbooks_service": {                                                                      											// Сценарии для Pipeline Service
        "MIGRATION_PPL_DEPLOY"      : {"id": 1, "description": "Миграция библиотек и скриптов Pipeline AD"},
        "WAS_FPI_UTIL_JOB_CONF"     : {"id": 2, "description": "Перенастройка Jenkins job"}
    },
    "fpConfigUrlJobParam": "false",                                                             											// Включение параметров REPOFPCONFIG, REPOFPCONFIGBRANCH
    "fpDistribUrlJobParam": "false",                                                            											// Включение параметров FPFILESERVERURL, FPFILESURI
    "ansiColorDisable":     "false",                                                            											// Отключить использование плагина ansiColor при формированиии вывода логов в консоли Jenkins
    "importSupTimeout": 600000,                                                                 											// Таймаут на импорт параметров в PACMAN (CFGA) (мс)
    "importSupRw": "true",                                                                      											// Режим -rw для импорт параметров в PACMAN (CFGA)
    "importErrorRw": "false",                                                                   											// Режим -rw для импорт параметров для обработки ошибок. Имеет два значения: true/false (По умолчанию false). При true режим добавления добавления новых + обновление существующих ошибок, при false режим добавления только новых ошибок которых еще нет в базе.
    "markerName": "devbar",                                                                     											// Название создаваемого маркера
    "jobsUrl": {                                                                                											// Адреса Jenkins jobs для Pipeline Scheduler
      "adJob_dev_test": "https://<jenkins_address>/efs/job/pipeline-fpi-deploy",                											// Адрес Pipeline Deploy job для стенда dev_test
      "getTicketIJob": "https://<jenkins_address>/efs/job/kit2.0"                               											// Адрес Jenkins job получения тикета на портале тестирования
    },
    "acl": ["<personal_login1>", "<personal_login2>"],                                          											// ACL (access list) для среды "dev_test"
    "enableAcl": "true",                                                                        											// Триггер на проверку acl списка
    "openshift_params": {                                                                       											// Параметры для работы с удаленным Jenkins job развертывания приложения в контейнере
      "jobUrl": "https://<jenkins_address>/efs/job....",                                        											// Адрес Jenkins job, развертывающего приложения в контейнере
      "jobParams": {                                                                            											// Дополнительные параметры запуска Jenkins job (сделано для пилота, для возможности быстро эксперементировать
                                                                                                											// без изменения кода pipeline)
        "p1": "v1",
        "p2": "v2"
     },
    "envNotification": "true",                                                                  											// Включение баннера для оповещения о том, на какой среде запускается сборка, и требующего подтверждения (EDOIN-2989)
    "envNotificationTimeout": "3",                                                              											// Таймаут для падания Jenkins job, если пользователь не подтвердил сборку, единица = минута
    "omPostUrl": "http://<ouiefs_address>/om-service/create",                                   											// Указание адреса для отправки данных на сервер объективного мониторинга. Указано значение по умолчанию.
                                                                                                											// Добавление данного параметра для стенда активирует механизм отправки данных. По умолчанию данные не отправляются.
    "omStartTypeJob": "manual"                                                                  											// Необязательный параметр для ручного запуска AD Jenkins job (в случае активации "postUrlOM").
                                                                                                											// При запуске Jenkins job через scheduler или другbv Jenkins job необходимо выставить значение "auto"

 "dev" : {
    "scriptsCustom": {                                                                          											// Для использования репы скриптов, отличной от используемой по умолчанию. Только если ENVIR начинается с dev или mmv.
                                                                                                											// В дополнение см. параметр Job-ы NO_SCRIPTSCUSTOM
                                                                                                											// Учитывается для AD, SPO и Security Jenkins jobs
     "gitSshUrlFull": "ssh://<bitbucket_adress>/ci00428440/CI00380023_efs_scripts.git",
      "gitCreds": "03368280-ef6a-4211-8799-284bb15a46d7",
      "gitRepoName": "ci00380023_efs_scripts"
    }
},


[...]

}
Переопределение конфигураций в сервисном environment.json#

Следующая настройка описана для Service job

В Service job существует возможность менять конфигурации из сервисного environment.json напрямую из настроек Jenkins job.

Для этого необходимо в настройках Jenkins job в секции Properties content указать значения переменных следующим образом:

В настройках Service job существует возможность переопределять любой параметр из сервисного файла environments.json, например:

  • задать путь артефактов common/migration в Nexus;

  • определить параметр для авторизации в Nexus;

  • определить список нескольких репозиториев Nexus с артефактами (подробнее см. инструкцию).

Поле Properties Content настроек Service job:

installer.common.nexus_host=http://host
installer.migration.nexus_host=http://host2
nexusMavenMetadataAuth=true
mavenArtifactsUrls: ['https://some-host1/repository/repoName/', 'https://some-host2/repository/repoName/', https://some-host3/repository/repoName/']

Важно

Следует учитывать, что в первую очередь параметры будут переопределяться по стандартному процессу.
➲ То есть: сперва будут браться параметры из секции default сервисного файла – после чего они будут перезаписываться параметрами из секции стенда (ift/prom/psi) – и наконец они будут переопределяться параметрами из Properties content.

_passwords.conf#

Для работы с Deploy job файл passwords.conf должен быть зашифрован.

Данный файл выступает в роли хранилища секретных параметров, таких как пароли от шлюзов, баз данных, WAS и OSE секреты, и является заменой или дополнением к файлу common репозитория – secret.yml. Файл _passwords.conf на стенде храниться в формате OpenSSL и шифруется с сервера / рабочей машины, на котором установлен OpenSSL. На стенде для зашифровки и расшифровки используется утилита Jenkins Secret Text. После миграции common (с помощью Service job) данный файл мигрируется на стенд в НЕЗАШИФРОВАННОМ виде.

Для использования произвольного ID Credentials для расшифровки файла passwords.yml необходимо также произвести донастройку файла environment.json сommon репозитория стенда. В частности, перенести блок credentials в секцию среды и сменить значение у ключа openshiftOpsPasswordsCred.

Например:

  • было: "openshiftOpsPasswordsCred": "oldCredId"

  • стало: "openshiftOpsPasswordsCred": "newCredId"

  1. Зашифровать файл:

    openssl enc -aes-256-cbc -md md5 -salt -in _passwords_d.conf -out _passwords.conf

    Обратите внимание, на то, что необходимо переименовать исходный файл с _passwords.conf на _passwords__d.conf . Это необходимо сделать из-за того, что результатом выполнения команды openssl не может быть тот же файл, что был получен на входе.

  2. Расшифровать файл:

    openssl enc -aes-256-cbc -md md5 -salt -in _passwords.conf -out _passwords_d.conf -d

Правила эксплуатации#

В составе программного компонента Deploy tools (CDJE) не встроены механизмы защиты данных и обеспечения информационной безопасности. Эксплуатация платформенных механизмов безопасности должна осуществляться в соответствии с их документацией. Специальных требований к эксплуатации не предъявляется.

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