Создание Jenkins Job для автоматической установки EDMS#
Данный подраздел подготовки окружения относится только к разделу Автоматическая установка.
Настройка credentials для Ansible-Vault#
Создать файл с паролем, с помощью которого при автоматической установке будут расшифровываться пароли, зашифрованные через ansible-vault в параметрах (vars) выбранного inventory. Пароль требуется задать согласно следующим рекомендациям: Рекомендации по заданию стойких паролей

Зайти в Jenkins в свой проект, перейти во вкладку Credentials, далее выбрать ваш проект.

Открывается страница, где необходимо выбрать Global credentials (unrestricted).

Далее перейти во вкладку Add Credentials,

После перехода будут доступны поля для заполнения:
разделе Kind необходимо выбрать параметр «Secret file»;
далее загрузить файл (создание файла см в пункт 1);
в параметре ID <указать Id> (где ID это наименование, которое придумываете самостоятельно, данный id необходимо будет указать в Jenkins Job в параметре vault_cred);
поле Description: либо добавить описание, либо можно оставить строку не заполненной.
Credentials для Vault создается после нажатия кнопки «Create».

Создание Jenkins Job#
Содержимое дистрибутива
./EDMS-scripts-{version}-distrib.zipпоместить в Git репозиторий.Выбрать в Jenkins New Item для создания нового Jenkins Job

2.1. Добавить название создаваемого Jenkins Job. Нельзя использовать в названии кириллицу и спецсимволы.
2.2. Выбрать Pipeline и нажать кнопку ОК.

2.3. На появившейся странице необходимо заполнить поля в блоке Pipeline поля:
Изменить значение параметра
Definitionна Pipeline script from SCM;Изменить значение параметра SCM на Git;
Заполнить параметр
Repository URL, в параметре указать путь до вашего Git репозитория;Заполнить параметр
Credentials, в параметре указать ваши Credentials с правами на чтение;В параметре
Branches to buildвыбрать ветку, в которой находятся скрипты;В параметре
Script Pathуказать путь до groovy-скрипта Pipeline/SYN_custom.groovy;Убедиться, что НЕ стоит галочка Lightweight checkout.
Сохранить получившийся Jenkins Pipeline.
На появившейся странице, в меню боковой панели выбрать Собрать сейчас. Запускается первоначальная сборка.

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

На появившейся странице необходимо заполнить следующие параметры и нажать кнопку Собрать:
jenkins_slave- имя агента Jenkins для сборки;ansible_version- название Jenkins Tool, отвечающий за используемую версию Ansible.
Необходимо обновить страницу и после окончания работы Jenkins Job снова нажать Собрать с параметрами.
Появится страница со всем списком настраиваемых параметров, отвечающих за установку EDMS:
Параметр
job_config_renewотвечает за обновление Jenkins Job. При установке приложения должен быть выключен (false). Для обновления текущих параметров и сохранения значений по умолчанию должен быть включен (true).В параметре
kupolUrlуказать ссылку на АС "Купол"";В параметре
inventoryвыбрать ранее созданный вами inventory. Inventory создавались на шаге Подготовка окружения раздел Настройка inventory;В параметре
nexusUrlуказать ссылку на переданный дистрибутив;В параметре
emailtoуказать почту, на которую придет рассылка о статусе установки приложения;В параметре
playbookвыбрать необходимый сценарий установки:
где emc.yml - устанавливает emc;
etcd.yml - устанавливает etcd;
synapse_emc.yml - устанавливает emc и etcd;
<название сервиса>_system_service.yml - устанавливает system service по указанному сервису.
<название сервиса>_user_service.yml - устанавливает user service по указанному сервису.В параметре
standTypeвыбрать необходимый тип стенда;Первая установка приложения выполняется без выбора
tags. Это позволит полностью выполниться playbook;В случае, если необходима частичная установка, то можно выбрать определенные теги
tags:
для playbook "emc.yml":
backup — создание backup,
backup_remove — удаление backup,
backup_restore — восстановление из backup,
custom_files — генерация кастомных файлов,
distribute — распаковка дистрибутива,
install — запуск блока установки,
start — запуск сервиса,
stop — остановка сервиса;
для playbook "etcd.yml":
access_control — создание/изменение ролевой модели,
backup — создание backup,
backup_remove — удаление backup,
backup_restore — восстановление из backup,
distribute — распаковка дистрибутива,
install — запуск блока установки,
start — запуск сервиса,
status — статус сервиса,
stop — остановка сервиса,
template — генерация шаблонов из /roles/etcd/templates.
Параметр
install_all_hostsотвечает за выполнение playbook на всех host из выбранного inventory;Параметр
only_on_hostотвечает за выполнение playbook на выбранных host;Параметр
custom_vault_passwordотвечает за ручной ввод пароля для Ansible Vault;Параметр
jenkins_slaveзаполнить именем агента Jenkins для сборки;В параметре
jdk_toolуказать Jenkins Tool с нужной версией JDK;В параметре
ansible_branchвыбрать ветку, в которой находятся скрипты. При этом в настройках Jenkins Job в параметреBranches to buildнеобходимо указать${ansible_branch}.В параметре
ansible_versionуказать название Jenkins Tool, отвечающим за используемую версию Ansible;В параметре
secman_urlуказать URL для подключения к Hashicorp Vault;В параметре
nexus_user_credуказать ID Jenkins Credential типаusername with passwordдля выкачивания дистрибутива из Nexus,
при задании параметраsecman_url— указать полный путь в Hashicorp Vault до пользователя и пароля,
например {ID Jenkins Credential типаvault app roleдля получение секретов из Hashicorp Vault}|/…/KV/nexus:{юзер},{пароль};В параметре
vault_credуказать ID Jenkins Credential типаsecret fileсо строкой для расшифровки паролей (ansible vault) (можно несколько через запятую),
при задании параметраsecman_url— указать полный путь в Hashicorp Vault до пароля,
например {ID Jenkins Credential}|/…/KV/vault:{password_1},{ID Jenkins Credential_2}|/…/KV/vault:{password_2}
(в качестве пароля можно использовать не строку, а файл в base64 формате с ключом секрета, заканчивающимся на Base64, например myVaultBase64);В параметре
server_ssh_credуказать ID Jenkins Credential типаssh keyдля подключения к серверам при задании параметраsecman_url— указать полный путь в Hashicorp Vault до секрета,
например {ID Jenkins Credential типаvault app roleдля получение секретов из Hashicorp Vault}|/…/KV/ssh:{юзер},{ключ},{passphrase}
(в качестве ключа можно использовать не строку, а файл в base64 формате с ключом секрета, заканчивающимся на Base64, например myPrivateKeyBase64);Параметр
ssl_verifyотвечает за проверку сертификатов при подключении к Hashicorp Vault или Nexus;Параметр
ssl_verify_kupolотвечает за проверку сертификатов при отправках данных в АС "КУПОЛ";В параметре
inventories_repoуказать до репозитория с вашими inventory. Данный пункт применим, если inventory были созданы в другом репозитории, отличным от того, где лежат скрипты;В параметре
inventories_branchуказать ветку того репозитория, где находятся inventory. Данный пункт применим, если inventory были созданы в другом репозитории, отличным от того, где лежат скрипты;В параметре
inventories_pathуказать значениеAnsible/inventories.
Для сохранения значений всех заполненных параметров убедиться, что включен параметр job_config_renew, и нажать кнопку Собрать.
Для продолжения установки вернитесь к разделу Автоматическая установка.