Создание Jenkins Job для автоматической установки EDMS#

Данный подраздел подготовки окружения относится только к разделу Автоматическая установка.

Настройка credentials для Ansible-Vault#

  1. Создать файл с паролем, с помощью которого при автоматической установке будут расшифровываться пароли, зашифрованные через ansible-vault в параметрах (vars) выбранного inventory. Пароль требуется задать согласно следующим рекомендациям: Рекомендации по заданию стойких паролей

    NewFile

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

    Jenkins

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

    Jenkins

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

    Jenkins

  5. После перехода будут доступны поля для заполнения:

  • разделе Kind необходимо выбрать параметр «Secret file»;

  • далее загрузить файл (создание файла см в пункт 1);

  • в параметре ID <указать Id> (где ID это наименование, которое придумываете самостоятельно, данный id необходимо будет указать в Jenkins Job в параметре vault_cred);

  • поле Description: либо добавить описание, либо можно оставить строку не заполненной.

Credentials для Vault создается после нажатия кнопки «Create».

Jenkins

Создание Jenkins Job#

  1. Содержимое дистрибутива ./EDMS-scripts-{version}-distrib.zip поместить в Git репозиторий.

  2. Выбрать в Jenkins New Item для создания нового Jenkins Job

    NewItem

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

2.2. Выбрать Pipeline и нажать кнопку ОК.

NewItem_create

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.

  1. Сохранить получившийся Jenkins Pipeline.

  2. На появившейся странице, в меню боковой панели выбрать Собрать сейчас. Запускается первоначальная сборка.

    Now

  3. Необходимо обновить страницу.

  4. Затем выбрать в меню боковой панели Собрать с параметрами.

    Params

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

  • jenkins_slave - имя агента Jenkins для сборки;

  • ansible_version - название Jenkins Tool, отвечающий за используемую версию Ansible.

  1. Необходимо обновить страницу и после окончания работы Jenkins Job снова нажать Собрать с параметрами.

  2. Появится страница со всем списком настраиваемых параметров, отвечающих за установку 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, и нажать кнопку Собрать.

Для продолжения установки вернитесь к разделу Автоматическая установка.