Создание дистрибутива#
Данный сценарий позволяет создать конфигурационный дистрибутив, содержащий информацию по адресам/очередям, создаваемым на брокере, а также выдать права на них. После создания конфигурационного дистрибутива, его необходимо развернуть - Развертывание дистрибутива.
Ручной способ#
Необходимо в соответствующем inventory заполнить файл group_vars/all/vars.yml:
artemis_queues:
defaults: # значения по умолчанию для конфигурации очереди
max_size_bytes: -1 # Максимальный размер памяти, выделенной для адреса, до начала применения механизма paging. Значение -1 соответствует отсутствию ограничений
max_size_messages: -1 # Максимальное количество сообщений, записываемых в адрес, до начала применения механизма paging. Значение -1 соответствует отсутствию ограничений
max_delivery_attempts: 10 # Количество попыток отправки сообщения, перед тем как оно будет направлено в DLQ (-1 соответствует бесконечному числу попыток)
address_full_policy: FAIL # Политика поведения при заполнения адреса. Возможные значения: PAGE / DROP / FAIL / BLOCK. Для персистентного кластера значение по умолчанию - PAGE. Для неперсистентного кластера значение по умолчанию отсутствует.
# Если значение соответствует PAGE, то при заполнении адреса дальнейшие сообщения будут записаны на диск, включится механизм paging.
# Если значение соответствует DROP, при заполнении адреса следующие сообщения не будут записаны без фиксирования ошибки/логов/исключений.
# Если значение соответствует FAIL, следующие сообщения не будут записаны в адрес и клиенту producer будет выдано исключение.
# Если значение соответствует BLOCK, то клиенты producers будут заблокированы, затем будут пытаться дальше посылать сообщения.
min_expiry_delay: "-1"
max_expiry_delay: "-1"
# Сообщения без указания экспирации будут по умолчанию установлены на значение, указанное в параметре max-expiry-delay. Если max-expiry-delay не определен, тогда экспирация будет установлена в значение, указанное в параметре min-expiry-delay. Если значение min-expiry-delay не определено, тогда сообщение не будет изменено.
# Сообщения, у которых экспирация задана выше значения max-expiry-delay, значения экспирации будут установлены как указано в max-expiry-delay
list:
- name: <имя очереди>
address: <имя адреса>
routing: <способ передачи сообщений от адреса к очередям> # необязательный параметр. Доступные значения: anycast (добавление в одну произвольную очередь данного адреса), multicast (добавление во все очереди данного адреса)
- name: <имя очереди2>
address: <имя адреса2>
max_size_bytes: <максимальный размер сообщений в адресе>
- name: queue_with_page_addr_settings
address: address_with_page_settings
page_limit_bytes: 100 # После перехода в режим paging, количество данных, которые система позволит принять. Количество байт будет сконвертировано внутренним механизмом в количество страниц(pages). Не имеет значения по умолчанию.
page_limit_messages: 200 # После перехода в режим paging, количество сообщений, которые система разрешит принять. Не имеет значения по умолчанию.
page_full_policy: DROP # Доступные значения DROP or FAIL. Данный параметр задает механизм поведения системы после достижения максимума по page-limit-bytes или page-limit-messages после переключения в режим paging. Не имеет значения по умолчанию.
artemis_roles:
- user: <DN пользователя>
queue: <имя очереди>
address: <имя адреса>
type: <тип операции, доступно одно или несколько значений send/consume/browse. Несколько значений указываются через запятую без пробелов>
inventory: DEV # параметр опционален, без его указания роль задается для всех стендов
Блок artemis_roles может быть также задан в другой структуре, где роли для пользователей сгруппированы по стендам, например:
artemis_roles:
IFT:
- user: CN=111***1111, OU=00CA, O=Organization, L=Moscow, ST=Moscow, C=RU
queue: test2
address: test2
type: send,consume,browse # send/consume/browse, можно несколько через запятую
- user: CN=222****222, OU=00CA, O=Organization, L=Moscow, ST=Moscow, C=RU
queue: test2
address: test2
type: send # send/consume/browse, можно несколько через запятую
erase: true # маркер для удаления
DEV:
- user: CN=333****222, OU=00CA, O=Organization, L=Moscow, ST=Moscow, C=RU
queue: test2
address: test2
type: send # send/consume/browse, можно несколько через запятую
- user: CN=444****222, OU=00CA, O=Organization, L=Moscow, ST=Moscow, C=RU
queue: test2
address: test2
type: send # send/consume/browse, можно несколько через запятую
erase: true # маркер для удаления
Здесь IFT, DEV — имя inventory, в который будут установлены соответствующие роли. Если имя inventory отличается от имени группы в artemis_roles, то можно использовать параметр inventory_for_roles.
Например, для установки ролей, находящихся в группе DEV, в inventory с именем DEV-TEST необходимо в файле vars.yml для inventory DEV-TEST указать:
inventory_for_roles: DEV
Заполнение блока artemis_roles допускается в одном из вышеуказанных вариантов (не допускается одновременное задание обоими способами).
Весь список настраиваемых параметров можно посмотреть в roles/artemis_queues/defaults/main.yml и roles/artemis_roles/defaults/main.yml.
После заполнения файла vars.yml необходимо запустить создание очередей и ролей для них командой
ansible-playbook -i inventories/<ID>/inventory artemis_queues_roles.yml --ask-vault-pass
, где inventories/<ID>/inventory — путь до файла inventory.
С помощью Jenkins#
Наименование задания Jenkins: artemis_config_create.
Параметры запуска:
majorVersion— мажорная версия дистрибутива. Пример полный версии дистрибутива - ${majorVersion}.001.00_suffix-00;nexusUrl— ссылка на пространство в Nexus для публикации дистрибутивов;nexusCred— ID credential типа username with password для публикации дистрибутива в Nexus. При задании параметра secman_url - полный путь в HashiCorp Vault до user и пароля, например {ID credential типа vault app role для получение секретов из HashiCorp Vault или Secret Management}|/<путь до Nexus>/nexus:{user},{пароль};secman_url— URL для подключения к HashiCorp Vault;ssl_verify— проверка, являются ли сертификаты HashiCorp Vault/Nexus доверенными;suffix— суффикс для дистрибутива в формате<ServiceName>_<C|P>_<System>, где:ServiceName— наименование сервиса;C|P— является ли дистрибутив дистрибутивом потребителя сервиса (С) или поставщика сервиса (P);System— система-владелец дистрибутива;
rebuildVersion— версия дистрибутива для пересборки. При пустом значении выпускается новый релиз;jenkinsSlaveNode— Jenkins Slave для установки;emailTo— список адресов электронной почты для отправки технических писем о начале/окончании установки с логами;artemisConfig— описание конфигурационного дистрибутива для создания адресов, очередей и прав для пользователей в YAML формате; при незаданном параметреartemisConfigвыкачивается конфигурационный файл из репозитория, см. ниже параметрgitPath. В данном поле осуществляется проверка правильности заполнения параметраtype; для него доступны значения: send, consume, browse, либо несколько из них. Пример заполнения:artemis_queues: list: - name: <имя очереди> address: <имя адреса> routing: <способ передачи сообщений от адреса к очередям> # Необязательный параметр. Доступные значения: anycast (добавление в одну произвольную очередь данного адреса), multicast (добавление во все очереди данного адреса) - name: <имя очереди2> address: <имя адреса2> max_size_bytes: <максимальный размер сообщений в адресе> - name: queue_with_page_addr_settings address: address_with_page_settings page_limit_bytes: 100 # После перехода в режим paging, количество данных, которые система позволит принять. Количество байт будет сконвертировано внутренним механизмом в количество страниц(pages). Не имеет значения по умолчанию. page_limit_messages: 200 # После перехода в режим paging, количество сообщений, которые система разрешит принять. Не имеет значения по умолчанию. page_full_policy: DROP # Доступные значения DROP or FAIL. Данный параметр задает механизм поведения системы после достижения максимума по page-limit-bytes или page-limit-messages после переключения в режим paging. Не имеет значения по умолчанию. artemis_roles: - user: <DN пользователя> queue: <имя очереди> address: <имя адреса> type: <тип операции, доступно одно или несколько значений send/consume/browse. Несколько значений указываются через запятую без пробелов> inventory: DEV # параметр опционален, без его указания роль задается для всех стендов
Структура заполнения блока artemis_roles может быть другой, аналогично способу, описанному выше в разделе Ручной способ.
gitPath— путь до файла в репозитории (при пустом параметреartemisConfigвыкачивается конфигурационный файл из репозитория). Например, my_folder/folder/file.conf;gitUrl— ссылка на репозиторий хранения конфигурационного файла;gitCred— credentials для репозитория хранения конфигурационного файла;gitBranch— ветка репозитория хранения конфигурационного файла;gitInfo— строка для поиска по истории коммитов в репозитории хранения конфигурационного файла, например для формирования файла Release notes. Опциональный параметр, необязателен для заполнения. В результате выполнения Jenkins job в консоль вывода логов Jenkins будут выведены все коммиты с вхождением строки, указанной в данном параметре;extentionPointUrl— ссылка на zip-архив с точкой расширения (config_create_extension_point.groovy). Опциональный параметр. Заполняется в случае, если после завершения Jenkins job необходимо выполнить какие-либо дополнительные сценарии. Выполняется только после успешного завершения работы Jenkins job.