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

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

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

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

После перехода будут доступны поля для заполнения:
«Kind» — в выпадающем списке выбрать параметр Secret file;
«File» — загрузить созданный файл с паролем;
«ID» — указать наименование, которое придумываете самостоятельно (данный ID необходимо будет указать в job SYN_custom_kafka в параметре
vault_cred);«Description» — необязательное поле, в котором можно добавить описание.
Нажать кнопку Create — Credentials для Vault создаются после нажатия кнопки «Create»:

Создание Jenkins Job SYN_custom_kafka#
Содержимое дистрибутива ./EVTD-scripts-{version}-distrib.zip поместить в git-репозиторий.
Выбрать 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», в параметре указать ваши сredentials с правами на чтение;
В параметре «Branches to build» выбрать ветку, в которой находятся скрипты;
В параметре «Script Path» указать путь до groovy-скрипта Pipeline/SYN_custom.groovy;
Убедиться, что НЕ стоит галочка Lightweight checkout.
Пример заполнения параметров:

Сохранить получившийся Jenkins Pipeline.
На появившейся странице в меню боковой панели выбрать «Собрать сейчас» — запустится первоначальная сборка:

После запуска сборки необходимо обновить страницу.
Выбрать в меню боковой панели «Собрать с параметрами»:

Заполнить следующие параметры на появившейся странице:
jenkins_slave— имя агента Jenkins для сборки;ansible_version— указание Jenkins Tool с необходимой версией Ansible. Конкретное значение необходимо получить у администратора Jenkins.
Нажать кнопку «Собрать».
Обновить страницу и после окончания работы Jenkins Job снова нажать «Собрать с параметрами».
Появится страница со всем списком настраиваемых параметров, отвечающих за установку компонента EVTD:
job_config_renew— обновление Jenkins Job. При установке приложения должен быть выключен (false). Для обновления текущих параметров и сохранения значений по умолчанию должен быть включен (true);inventory— имя inventory для установки;nexusUrl— ссылка на переданный дистрибутив ./EVTD-kafka-[version]-distrib.zip;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_limits.yml — создание и удаление лимитов на чтение/запись для клиентов брокеров Platform V Corax / Apache Kafka;
kafka_topics.yml — создание топиков для брокеров Platform V Corax / Apache Kafka;
kafka_topics_acls.yml — создание и удаление топиков/ACL для брокеров Platform V Corax / Apache Kafka;
md5_to_x509.yml — сценарий для миграции соединения брокеров Platform V Corax / Apache Kafka с Zookeper с digestmd5 на x509;
rolling_upgrade.yml — понодное обновление Zookeeper и брокеров Platform V Corax / Apache Kafka без недоступности с предыдущей версии;
ssl_rolling_update.yml — понодное обновление сертификатов для Zookeeper и брокеров 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;
kafka_get_info.yml — получение информации о версии кластера Platform V Corax / Apache Kafka, к которому предполагается подключение.
tags– cписок тегов. Первая установка приложения выполняется без выбора тегов. Это позволит полностью выполниться playbook. В случае, если необходима частичная установка, то можно выбрать определенные теги:backup — создание backup;
backup_remove — удаление backup;
backup_restore — восстановление из backup;
custom_files — генерация кастомных файлов;
distribute — распаковка переданного дистрибутива EVTD;
ini_change — используется для изменения настроек в конфигурации брокеров Platform V Corax / Apache Kafka и Zookeper (параметры
kafka.iniChangeиzookeper.iniChangeсоответственно в файле vars.yml);install — запуск блока установки;
start — запуск сервиса;
status — статус сервиса;
restart – перезапуск сервиса;
stop — остановка сервиса;
unistall — удаление сервиса;
update_audit — обновление настроек аудита.
select_all_hosts– выполнение playbook на всех серверах из выбранного inventory;only_on_host– выполнение playbook на выбранных серверах;emailto— список адресов электронной почты для отправки результатов (письмо исполнителю упадет автоматически);custom_vault_password– ручной ввод пароля для Ansible Vault;jenkins_slave— выбор Jenkins Slave;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 Username with private key credential ID для подключения к серверам. При задании параметраsecman_url— укажите полный путь в Hashicorp Vault до секрета. Например:{Jenkins *Vault App Role Credential* ID для получения секретов из HashiCorp Vault}|/.../KV/ssh:{user},{key},{passphrase}. В качестве ключа можно использовать не строку, а файл в base64 формате с ключом секрета, заканчивающимся на Base64. Например myPrivateKeyBase64;secman_url— URL для подключения к HashiCorp Vault;jdk_tool— наименование Jenkins Tool с необходимой версией JDK. Конкретное значение необходимо получить у администратора Jenkins;ssl_verify— проверка, являются ли сертификаты HashiCorp Vault/Nexus доверенными;inventories_repo— репозиторий с inventory. Данный пункт применим, если inventory были созданы в другом репозитории, отличным от того, где лежат скрипты;inventories_branch— ветка репозитория, где находятся inventory. Данный пункт применим, если inventory были созданы в другом репозитории, отличным от того, где лежат скрипты;inventories_path— путь до inventories от корня репозитория (значениеAnsible/inventories).
Для сохранения значений всех заполненных параметров необходимо убедиться, что включен параметр job_config_renew, и нажать кнопку «Собрать».
Для продолжения установки вернитесь к разделу Установка с помощью Jenkins.