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

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

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

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

Пароль требуется задать согласно разделу Рекомендации по заданию стойких паролей.

NewFile

  1. Далее зайти в Jenkins в свой проект, перейти во вкладку Credentials и выбрать нужный проект:

Jenkins- prerequirements.yml — playbook для автоматической настройки пререквизитов: устанавливает необходимые пакеты, модифицирует лимиты, настройки сети, включает linger для использования пользовательских сервисов и создает директории установки/логов;

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

Jenkins

  1. Перейти во вкладку Add Credentials:

Jenkins

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

  • «Kind» — в выпадающем списке выбрать параметр Secret file;

  • «File» — загрузить созданный файл с паролем;

  • «ID» — указать наименование, которое придумываете самостоятельно (данный ID необходимо будет указать в job SYN_custom_kafka в параметре vault_cred);

  • «Description» — необязательное поле, в котором можно добавить описание.

  1. Нажать кнопку Create — Credentials для Vault создаются после нажатия кнопки «Create»:

Jenkins

Создание Jenkins Job SYN_custom_kafka#

  1. Содержимое дистрибутива ./EVTD-scripts-[version]-distrib.zip поместить в git-репозиторий.

  2. Выбрать 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», в параметре указать ваши сredentials с правами на чтение;

  • В параметре «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.

  1. Нажать кнопку «Собрать».

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

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

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

  • inventory — имя inventory для установки;

  • nexusUrlKafka — полный путь до дистрибутива KFKA или дистрибутива Apache Kafka;

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

    • admin_rights.yml — предоставление прав для сертификатов администратора при использовании Jenkins job kafka_config_deploy; (параметр kafka.admin_rights в файле vars.yml);

    • kafka.yml — установка брокеров Platform V Corax / Apache Kafka;

    • kafka_acls.yml — создание и удаление ACL для брокеров Platform V Corax / Apache Kafka;

    • kafka_get_info.yml — получение информации о версии кластера Platform V Corax / Apache Kafka, к которому предполагается подключение;

    • kafka_limits.yml — создание и удаление лимитов на чтение/запись для клиентов брокеров Platform V Corax / Apache Kafka;

    • kafka_topics.yml — создание topics для брокеров Platform V Corax / Apache Kafka;

    • kafka_topics_acls.yml — создание и удаление topics/ACL для брокеров Platform V Corax / Apache Kafka;

    • zk_and_kafka.yml — установка компонентов Zookeeper и брокеров Platform V Corax / Apache Kafka;

    • zk_kafka_system_service.yml — создание системных сервисов обслуживания для Zookeeper и брокеров Platform V Corax / Apache Kafkaa;

    • zk_kafka_user_service.yml — создание пользовательских сервисов обслуживания для Zookeeper и брокеров Platform V Corax / Apache Kafka;

    • zookeeper.yml — установка компонента Zookeeper.

  • tags — список тегов. Первая установка приложения выполняется без выбора тегов. Это позволит полностью выполниться playbook. В случае, если необходима частичная установка, то можно выбрать определенные теги:

    • backup — создание backup;

    • backup_remove — удаление backup;

    • backup_restore — восстановление из backup;

    • distribute — распаковка переданного дистрибутива EVTD;

    • ini_change — используется для изменения настроек в конфигурации брокеров Platform V Corax / Apache Kafka и Zookeper (параметры kafka.iniChange и zookeper.iniChange соответственно в файле vars.yml);

    • install — запуск блока установки;

    • start — запуск сервиса;

    • status — статус установки сервиса; также используется для вывода результата обращения к endpoint дискаверинга (информация в логах);

    • restart — перезапуск сервиса;

    • stop — остановка сервиса;

    • unistall — удаление сервиса;

    • update_audit — обновление настроек аудита.

  • select_all_hosts — выполнение playbook на всех серверах из выбранного inventory;

  • only_on_host — выполнение playbook на выбранных серверах;

  • emailto — список адресов электронной почты для отправки результатов (письмо исполнителю упадет автоматически);

  • custom_vault_password — ручной ввод пароля для Ansible Vault;

  • jenkins_slave — выбор Jenkins Slave;

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

  • ansible_branch — ветка скриптов развертывания;

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

  • nexus_user_cred — Jenkins Username with Password credential ID для выкачивания дистрибутива. При задании secman_url — полный путь в HashiCorp Vault до имени пользователя и пароля. Например: {Jenkins *Vault App Role credential* ID для получения секретов из HashiCorp Vault}|path/to/nexus:{user},{password};

  • vault_cred — Jenkins secret file credential ID со строкой для расшифровки паролей (ansible vault). При задании secman_url — полный путь в HashiCorp Vault до пароля. Например: {Jenkins *Vault App Role credential* ID_1}|/path/to/vault:{password_1}, {Jenkins *Vault App Role credential* ID_2}|/path/to/vault:{password_2} В качестве пароля можно использовать не строку, а файл в base64 формате с ключом секрета, заканчивающимся на Base64. Например myVaultBase64;

  • server_ssh_cred — Jenkins ssh key Credential ID с ssh ключом для подключения к конечным серверам. Чтобы получить ssh_username, ssh_key, ssh_key_passsphrase для подключения к серверам из HashiCorp Vault, необходимо заполнить параметр secman_url в формате: JenkinsCredID|SecManPath:SecManKeys|SecManParams, где:

    • JenkinsСredID — Jenkins Vault App Role Credential ID, содержащий реквизиты для подключения к HashiCorp Vault;

    • SecManPath — путь к секретам в HashiCorp Vault;

    • SecManKeys — имена полей для JKS администратора в HashiCorp Vault и пароля от него через запятую.

      • Окончание имени поля для JKS администратора должно быть Base64;

      • JKS администратора в HashiCorp Vault должен храниться в KV хранилище в Base64 формате;

      • Поле пароля для JKS администратора опционально, в случае его отсутствия пароль будет запрошен в интерактивном режиме.

    • SecManParams — параметры подключения к HashiCorp Vault (через точку с запятой). Если данные параметры по умолчанию, то пропускаются вместе с «|» (в качестве ключа можно использовать не строку, а файл в base64 формате и секрет в HashiCorp Vault с именем, оканчивающимся на «Base64», например: myPrivateKeyBase64). Примеры:

      • SecManAppRoleCred|/CI01994970_CI02618129_ES/A/DEV/APP/JEN/KV/vault:ssh_username,ssh_key

      • SecManAppRoleCred|/CI01994970_CI02618129_ES/A/DEV/APP/JEN/KV/vault:ssh_username,ssh_key,ssh_key_passphrase

      • SecManAppRoleCred|/CI01994970_CI02618129_ES/A/DEV/APP/JEN/KV/vault:ssh_username,ssh_key,ssh_key_passphrase|engineVersion:2.

  • secman_url — URL для подключения к HashiCorp Vault;

  • ssl_verify — проверка, являются ли сертификаты HashiCorp Vault/Nexus доверенными;

  • second_hand_approve — подтверждение запуска другим администратором (контроль «второй рукой»; по умолчанию включен, true). При активации параметра одному администратору будет недоступна возможность запуска Jenkins Job без подтверждения со стороны другого администратора. При выключении параметра в логах появится информация об отключении данной проверки;

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

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

  • inventories_path — путь до inventories от корня репозитория (значение Ansible/inventories).

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

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