Работа с кластером#

В данном разделе описаны основные сценарии работы с кластером SMBX: запуск, остановка и перезапуск SMBX, назначение прав администратора сопровождения, сохранение, восстановление и удаление архивной копии настроек кластера, создание и удаление адресов и очередей на брокере SMBX.

Ручной способ#

На сервере, с которого производилась установка, выполнить команду:

ansible-playbook -i inventories/<ID>/inventory artemis.yml --ask-vault-pass

, где ID — имя созданного inventory.

С помощью Jenkins#

Наименование задания Jenkins: artemis_custom.

Параметры запуска:

  • job_config_renew — параметр, использующийся для перенастройки задания Jenkins. Меняет значения по умолчанию всех параметров, обновляет список inventory. Сохраняет предыдущее состояние параметров inventories_repo, inventories_branch, inventories_path. Обновляет список тегов для всех playbooks. По умолчанию не указывается;

  • inventory — выбрать inventory, для которого необходимо произвести последовательное обновление;

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

  • playbook — запускаемый playbook:

    • artemis.yml — работа с кластером SMBX;

      • tags — используемые теги:

        • admin_roles — назначение прав администратора сопровождения;

        • audit — обновляет конфигурацию аудита (изменяет файл audit.properties по данным из файла vars.yml (раздел artemis.audit_configs)из выбранного inventory) с загрузкой новых/обновленных сертификатов на сервер для подключения к системе аудита, например, Platform V Audit; данные сертификатов для обновления задаются в блоке artemis.audit_configs в файле vars.yml, сами сертификаты должны находиться в папке ssl в заданном inventory;

        • backup — сохранение архивной копии настроек кластера artemis.installdir в директорию artemis.backup_installdir из файла vars.yml. Входит в тег install;

        • backup_remove — удаление архивной копии настроек кластера из artemis.backup_installdir из файла vars.yml;

        • backup_restore — очистка artemis.installdir и восстановление из архивной копии настроек кластера из artemis.backup_installdir из файла vars.yml. Перед остановкой брокера для восстановления архивной копии проверяется наличие файла архива. В случае его отсутствия остановка брокера не осуществляется, выполнение Jenkins job прерывается с ошибкой об отсутствии бэкап-файла;

        • broker_update — установка брокера без удаления текущих данных (очереди, пользователи, права);

        • change_acceptor - изменение настроек аксептора (Важно: данный тег необходимо использовать либо с тегом restart, либо с тегами stop и start одновременно);

        • change_max_connections — изменение количества максимально открытых коннектов от пользователей, заполняется в блоке artemis.custom_max_connections файла vars.yml;

        • config_log_plugin — обновляет конфигурацию для BrokerConfigLoggingPlugin, настраивается в блоке artemis.rate_limit файла vars.yml;

        • connection_limiter_plugin — обновляет конфигурацию для ConnectionLimiterPlugin (ограничивает кол-во подключений, в зависимости от источника соединения) , настраивается в блоке artemis.connection_limiter_plugin файла vars.yml;

        • encryption_plugin — обновляет конфигурацию для EncryptionMessagePlugin, настраивается в блоке artemis.rate_limit файла vars.yml;

        • distribute — распаковка архива дистрибутива во временную директорию на сервере;

        • install — распаковка дистрибутива из tmp_dir в artemis.installdir, создание брокера, настройка конфигурационных файлов;

        • jmxreadonly_roles — отвечает за изменения конфигурации доступа пользователе с ролью jmxreadonly;

        • keycloak — обновляет настройки интеграции с IAM Proxy/keycloak;

        • latency — обновляет конфигурацию для MessagePlugin, настраивается в блоке artemis.latency_plugin.settings файла vars.yml;

        • logback — обновляет конфигурацию логирования (изменяет файл logback.xml по данным из файла vars.yml (раздел artemis.logback_kafka_appender) из выбранного inventory) с загрузкой новых/обновленных сертификатов на сервер для подключения к системе журналирования, например, Platform V Monitor; данные сертификатов для обновления задаются в блоке artemis.logback_kafka_appender в файле vars.yml, сами сертификаты должны находиться в папке ssl в заданном inventory;

        • metric_plugin — обновляет конфигурацию для MetricPlugin, настраивается в блоке artemis.rate_limit файла vars.yml;

        • plugin_backup — обновляет конфигурацию для BrokerBackupPlugin (автоматическое создание архивных копий), настраивается в блоке artemis.backup_plugin файла vars.yml;

        • rate_limit — обновляет конфигурацию для RateLimiterPlugin, настраивается в блоке artemis.rate_limit файла vars.yml;

        • restart — перезапуск брокера (совмещает теги start и stop);

        • start — запуск брокера;

        • status — проверка статуса (если порт брокера открыт, считаем, что брокер запущен). Входит в тег start;

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

        • uninstall — остановка SMBX и удаление директории установки/логов/данных (директории указаны в файле vars.yml выбранного inventory в параметрах artemis.installdir, artemis.datadir, artemis.logdir);

        • vault — обновляет конфигурацию взаимодействия с HashiCorp Vault (по данным из файла vars.yml из выбранного inventory с загрузкой новых/обновленных сертификатов на сервер для подключения к HashiCorp Vault; данные сертификатов для обновления задаются в файле vars.yml, сами сертификаты должны находиться в папке ssl в заданном inventory;

        • vault_add_new_broker_DN — добавляет DN сертификата из блока artemis.super_user в группу amq для бесшовного перехода на использование сертификата из HashiCorp Vault;

        • vault_remove_old_broker_DN — удаление старого DN сертификата (после перехода на сертификаты из HashiCorp Vault);

        • xml_change — модификация конфигурационных xml файлов, указанных в блоке artemis.xml_change. Входит в тег install;

      • artemis_queues_roles.yml — работа с адресами, очередями и пользователями SMBX (через конфигурацию в inventory);

        • tags — используемые теги:

          • erase_queue — удаляет очереди, указанные в файле vars.yml. Если очередь была единственной в адресе, то удаляется вместе с адресом. Пример заполнения vars.yml для удаления очереди:

        artemis_queues:
            list:
                - name: имя_очереди 
                address: имя_адреса
                routing: способ_передачи_сообщений_от_адреса_к_очередям # Необязательный параметр. Доступные значения: anycast (добавление в одну произвольную очередь данного адреса), multicast (добавление во все очереди данного адреса)
                - name: имя_очереди2
                address: имя_адреса2
                max_size_bytes: максимальный_размер_сообщений_в_адресе
        
        • erase_role — удаляет права пользователя, указанные в файле vars.yml; Пример заполнения vars.yml для удаления прав пользователя:

        artemis_roles:
            - user: DN_пользователя
              queue: имя_очереди
              address: имя_адреса
              type: тип_операции,_доступны_send/consume/browse
        
    • artemis_roles.yml — работа с ролями пользователей SMBX (через конфигурацию в inventory);

      • tags — используемые теги:

        • erase_role — удаляет роли пользователей, указанные в файле vars.yml (пример приведен выше);

    • artemis_queues.yml — работа с адресами и очередями SMBX (через конфигурацию в inventory);

      • tags — используемые теги:

        • erase_queue — удаление очередей, указанных в файле vars.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 от корня репозитория.