Добавить брокер в кластер (scale-up)#
Пререквизиты#
Добавить в файл inventory группу хостов с именем hosts_to_add и перечислить все добавляемые брокера в кластер (в виде IP адреса либо hostname):
[hosts_to_add]
new_host_1
new_host_2
После данного действия необходимо запустить playbook artemis_scale_up.yml с указанием пути до файла inventory ручным способом либо с помощью Jenkins.
После завершения выполнения playbook artemis_scale_up.yml содержимое группы с именем hosts_to_add в файле inventory следует перенести в группу с именем artemis.
Ручной способ#
На сервере, с которого производилась установка, выполнить команду:
ansible-playbook -i inventories/<ID>/inventory artemis_scale_up.yml --ask-vault-pass
, где inventories/<ID>/inventory — путь до файла inventory.
С помощью Jenkins#
Наименование задания Jenkins: artemis_custom.
Параметры запуска:
job_config_renew— параметр, использующийся для перенастройки задания Jenkins. Меняет значения по умолчанию всех параметров, обновляет список inventory. Сохраняет предыдущее состояние параметров inventories_repo, inventories_branch, inventories_path. Обновляет список тегов для всех playbooks. По умолчанию не указывается;inventory— выбратьinventory, для которого необходимо произвести добавление брокеров в кластер;nexusUrl— данный параметр можно не заполнять, он не используется в playbook artemis_scale_up.yml;playbook— запускаемый playbook: artemis_scale_up.yml;emailTo— список адресов электронной почты для отправки технических писем с логами;custom_vault_password— указывается, если нужен ручной ввод пароля для Ansible Vault;jenkins_slave— выбор Slave Jenkins;jdk_tool— указать Jenkins Tool с нужной версией JDK;ansible_branch— ветка скриптов развертывания (в настройках Jenkins Job указать ${ansible_branch});ansible_version— версия используемого ansible, например ansible29;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 credential типа ssh key для подключения к серверам. При задании параметра secman_url - полный путь в HashiCorp Vault, например {ID credential типа vault app role для получение секретов из HashiCorp Vault}|/<путь до>/ssh:{юзер},{ключ},{passphrase} (в качестве ключа можно использовать не строку, а файл в base64 формате с ключом секрета, заканчивающимся на Base64, например myPrivateKeyBase64);secman_url— URL для подключения к HashiCorp Vault;ssl_verify— проверяем, являются ли сертификаты HashiCorp Vault/Nexus доверенными;second_hand_approve— подтверждение запуска другим администратором (контроль «второй рукой»). Двухэтапное подтверждение запуска, требующее действия другого администратора для запуска задания Jenkins Job. При активации этой опции одному администратору будет недоступна возможность запуска задания Jenkins Job без подтверждения со стороны другого администратора;inventories_repo— репозиторий с inventory (ssh://);inventories_branch— ветка репозитория;inventories_path— путь до inventories от корня репозитория.
После заполнения всех параметров необходимо собрать Jenkins job.
После отработки Jenkins job необходимо добавить новый хост в блок artemis и убрать из блока hosts_to_add в файле inventory для успешного выполнения других сценариев администрирования.