Руководство оператора#
Данное Руководство оператора предназначено для пользователей, осуществляющих эксплуатацию программного компонента 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 функционал]. |
Использование приложения оператором#
Варианты использования 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) |
Назначение |
Входные параметры: |
Входные параметры: |
Результаты выполнения |
|---|---|---|---|---|
DB_UPDATE |
Запуск liquibase скриптов для накатки изменений в БД |
|
Дистрибутив должен содержать: |
3 варианта развертывания на БД: |
NGINX_DEPLOY |
Установка PL-компонентов приложения на группы серверов nginx/nginx_ui. Обычно используется для развертывания статики. |
Не требуется |
Статика nginx |
На сервера из группы nginx_ui будет скопирована статика из дистрибутива. |
NGINX_II_DEPLOY/NGINX_MM_DEPLOY/ |
Установка маршрутов на NGINX IAG |
|
distrib.yml |
На сервера NGINX IAG будут настроены маршруты. |
API_MANAGER_UPLOAD |
Выгрузка в API менеджер. |
Не требуется |
|
Выгрузка данных в API Manager. |
WMQ_UPDATE_FP |
Создание/обновление объектов WebSphere MQ |
Не требуется |
|
На серверах MQ созданы очереди. |
KAFKA_UPDATE_FP |
Создание/обновление объектов Kafka |
Не требуется |
|
На серверах 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 |
На сервера WAS будут настроены бщие настройки (jvm и т.п.). |
WAS_FPI_INSTALL |
Настройка ресурсов приложения на WebSphere AS |
Не требуется |
distrib.yml, секции: |
На сервера WAS будут настроены ресурсы для приложения (datasource, wm CF и т.п.). |
WAS_FPI_DEPLOY |
Установка BH-компонентов приложения на WebSphere AS |
Не требуется |
|
На серверах WAS будут установлены приложения из дистрибутива. |
WAS_START_SERVER |
Запуск сервера WebSphere AS |
Не требуется |
distrib.yml, секция applications.deploy_group |
Запуск серверов WAS |
WAS_SMOKE |
Запуск smoke тестов |
|
distrib.yml, секции: |
На серверах WAS будут выполнены smoke тестов из дистрибутива (будут выполнены запросы на REST и поиск по паттернам |
WAS_RUN_AUTOTEST |
Запуск АФТ API |
distrib.yml |
Не требуется |
Запуск Job автотестирование (UI). |
WAS_RUN_UI_AUTOTEST |
Запуск АФТ UI |
Не требуется |
Не требуется |
Запуск Job автотестирование |
MIGRATION_FP_CONF |
Миграция конфигурационных файлов приложения |
Не требуется |
Не требуются |
Миграция конфигурационных файлов дистрибутива приложения в репозиторий приложения. |
MIGRATION_AFT_CONF |
Миграция тестовых данных приложения и настроек АФТ |
Не требуется |
Не требуется |
Миграция тестовых данных приложения и настроек АФТ. |
FP_CONF_CHECK |
Проверка конфигурационных файлов приложения |
Не требуется |
Не требуются |
|
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:
MERGE — миграция кода/библиотек Pipeline, Scheduler, а так же миграция файла environment_<segment>.json / миграция общих настроек среды / миграция кода/библиотек Pipeline автотестов.
MIGRATION_SUBSYSTEMS — миграция файла subsystems_<segment>.json.
JOBS_RECONF_ALL — реконфигурация нескольких Jenkins jobs.
WAS_FPI_UTIL_JOB_CONF — реконфигурация Jenkins job.
MERGE_COMMON_REPO — схлопывание (миграция) блочных репозиториев в общий.
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 ${} в процессе шаблонизации
// 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" ], // Адреса рассылок отчетов работы 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
"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"
Зашифровать файл:
openssl enc -aes-256-cbc -md md5 -salt -in _passwords_d.conf -out _passwords.confОбратите внимание, на то, что необходимо переименовать исходный файл с _passwords.conf на _passwords__d.conf. Это необходимо сделать из-за того, что результатом выполнения команды
opensslне может быть тот же файл, что был получен на входе.Расшифровать файл:
openssl enc -aes-256-cbc -md md5 -salt -in _passwords.conf -out _passwords_d.conf -d
Правила эксплуатации#
В составе программного компонента Deploy tools (CDJE) не встроены механизмы защиты данных и обеспечения информационной безопасности. Эксплуатация платформенных механизмов безопасности должна осуществляться в соответствии с их документацией. Специальных требований к эксплуатации не предъявляется.
Сведения по форматам загрузки/выгрузки данных приведены в разделе Универсальный загрузчик.