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

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

Настройка 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 artemis_custom#

  1. Содержимое дистрибутива ./SMBX-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.

Пример заполнения параметров Pipeline_create

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

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

Now

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

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

Params

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

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

    • ansible_version - название Jenkins Tool с необходимой версией Ansible. Конкретное значение необходимо получить у администратора Jenkins.

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

  3. Появится страница со всем списком настраиваемых параметров, отвечающих за установку SMBX:

    • Параметр job_config_renew отвечает за обновление Jenkins Job. При установке приложения должен быть выключен (false). Для обновления текущих параметров и сохранения значений по умолчанию должен быть включен (true).

    • В параметре inventory выбрать ранее созданный вами inventory. Inventory должно быть создано ранее в разделе Настройка inventory;

    • В параметре nexusUrl указать ссылку на дистрибутив;

    • В параметре emailto указать почту, на которую придет рассылка о статусе установки приложения;

    • В параметре playbook выбрать необходимый сценарий установки: где

  • artemis.yml - устанавливает SMBX и административные действия с SMBX;

  • artemis_scale_down.yml — удаление брокера из кластера SMBX;

  • artemis_scale_up.yml — добавление брокера в кластер SMBX;

  • artemis_system_service.yml — создание системных сервисов для SMBX;

  • artemis_user_service.yml — создание пользовательских сервисов для SMBX;

  • rolling_upgrade.yml — понодное обновление SMBX без недоступности с предыдущей версии;

  • ssl_rolling_update.yml — понодное обновление сертификатов для SMBX без недоступности.

  • Первая установка приложения выполняется без выбора tags. Это позволит полностью выполниться playbook;

  • В случае, если необходима частичная установка, то можно выбрать определенные tags.

  • Параметр install_all_hosts отвечает за выполнение playbook на всех host из выбранного inventory;

  • Параметр only_on_host отвечает за выполнение playbook на выбранных host;

  • Параметр custom_vault_password отвечает за ручной ввод пароля для Ansible Vault;

  • Параметр jenkins_slave заполнить именем агента Jenkins для сборки;

  • В параметре ansible_branch выбрать ветку, в которой находятся скрипты. При этом в настройках Jenkins Job в параметре Branches to build необходимо указать ${ansible_branch}.

  • В параметре ansible_version указать Jenkins Tool с необходимой версией Ansible. Конкретное значение необходимо получить у администратора Jenkins.

  • В параметре secman_url указать URL для подключения к Hashicorp Vault;

  • В параметре nexus_user_cred — Jenkins Username With Password Credential ID для выкачивания дистрибутива устанавливаемого компонента из Nexus. Чтобы получить username и password для Nexus из SecMan, надо заполнить поле secman_url и это поле в формате:
    JenkinsCredID|SecManPath:SecManKeys|SecManParams
    Здесь:
    JenkinsCredID - Jenkins Vault App Role Credential ID c реквизитами для подключения к SecMan;
    SecManPath - Путь к секретам в SecMan;
    SecManKeys - Имена полей для username и password в SecMan через запятую;
    SecManParams - Параметры для подключения к SecMan через точку с запятой. Могут быть пропущены вместе с |, если параметры по умолчанию;

  • В параметре vault_cred — Jenkins secret file credential ID со строкой для расшифровки паролей ansible vault (можно несколько через запятую). Чтобы получить ansible vault password из SecMan, надо заполнить поле secman_url и это поле в формате:
    JenkinsCredID|SecManPath:SecManKey|SecManParams
    Здесь:
    JenkinsCredID - Jenkins Vault App Role Credential ID с реквизитами для подключения к SecMan;
    SecManPath - Путь к секрету в SecMan;
    SecManKey - Имя поля для ansible vault password в SecMan;
    SecManParams - Параметры для подключения к SecMan, через точку с запятой. Могут быть пропущены вместе с |, если параметры по умолчанию (в качестве пароля можно использовать не строку, а файл в base64 формате и секрет в SecMan с именем, оканчивающимся на „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;

  • В параметре inventories_repo указать до репозитория с вашими inventory. Данный пункт применим, если inventory были созданы в другом репозитории, отличным от того, где лежат скрипты;

  • В параметре inventories_branch указать ветку того репозитория, где находятся inventory. Данный пункт применим, если inventory были созданы в другом репозитории, отличным от того, где лежат скрипты;

  • В параметре inventories_path указать значение Ansible/inventories.

  • В параметре jdk_tool указывается Jenkins Tool с необходимой версией JDK. Конкретное значение необходимо получить у администратора Jenkins.

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

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

Создание дополнительных заданий Jenkins#

Для дальнейшего администрирования продукта необходимо создать дополнительные Jenkins jobs:

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

  • artemis_config_deploy, используется для установки конфигурационных дистрибутивов, выпущенных Jenkins Job artemis_config_create.

  • certs_validation, используется для проверки валидности сертификатов и оценки оставшихся сроков их годности.

Jenkins jobs создаются аналогично artemis_custom, за исключением того, что вместо SYN_custom.groovy задается другой скрипт:

  • для artemis_config_createartemis_config_create.groovy;

  • для artemis_config_deployartemis_utils.groovy;

  • для certs_validationvalidate_certs.groovy.