Модули и плагины Ansible
Вы можете использовать дополнительные модули и плагины для изменения внутренних метаданных ADCM во время выполнения playbook. Все модули и плагины подробно описаны в секциях ниже.
adcm_multi_state_set
Это специальный ADCM-специфический модуль, предназначенный для добавления новых мультисостояний различным объектам. Мультисостояния поддерживаются для кластеров, сервисов, хостов, компонентов и хостпровайдеров.
Использование service_name позволяет переключаться между сервисами.
Использование component_name позволяет переключаться между компонентами.
| Атрибут | Описание | Обязательность |
|---|---|---|
type |
Тип объекта. Возможные значения: |
Да |
state |
Значение состояния |
Да |
service_name |
Название сервиса |
Нет |
component_name |
Название компонента |
Нет |
host_id |
Идентификатор хоста, использующийся для изменения мультисостояний от хостпровайдера |
Нет |
|
ПРИМЕЧАНИЕ
Вы можете изменить состояние сервиса из другого сервиса, но существует риск возникновения параллельных задач, изменяющих одно и то же состояние. Будьте внимательны.
|
Примеры
- adcm_multi_state_set:
type: "cluster"
state: "state value"
- adcm_multi_state_set:
type: "service"
service_name: "First"
state: "state value"
- adcm_multi_state_set:
type: "component"
component_name: "another_component"
state: "state value"
- adcm_multi_state_set:
type: "component"
service_name: "another service"
component_name: "another_component"
state: "state value"
- adcm_multi_state_set:
type: "host"
host_id: {{ host_id }}
state: "state value"
adcm_multi_state_unset
Это специальный ADCM-специфический модуль, предназначенный для изменения мультисостояний различных объектов. Изменения поддерживаются для мультисостояний кластеров, сервисов, хостов, компонентов и хостпровайдеров.
Использование service_name позволяет переключаться между сервисами.
Использование component_name позволяет переключаться между компонентами.
| Атрибут | Описание | Обязательность |
|---|---|---|
type |
Тип объекта. Возможные значения: |
Да |
state |
Значение состояния |
Да |
service_name |
Название сервиса |
Нет |
component_name |
Название компонента |
Нет |
missing_ok |
Булевозначный параметр. В случае значения |
Нет |
host_id |
Идентификатор хоста, использующийся для удаления мультисостояний от хостпровайдера |
Нет |
|
ПРИМЕЧАНИЕ
Вы можете изменить состояние сервиса из другого сервиса, но существует риск возникновения параллельных задач, изменяющих одно и то же состояние. Будьте внимательны.
|
Примеры
- adcm_multi_state_unset:
type: "cluster"
state: "state value"
- adcm_multi_state_unset:
type: "service"
service_name: "First"
state: "state value"
- adcm_multi_state_unset:
type: "component"
component_name: "another_component"
state: "state value"
- adcm_multi_state_unset:
type: "component"
service_name: "another service"
component_name: "another_component"
missing_ok: true
state: "state value"
- adcm_multi_state_unset:
type: "host"
host_id: {{ host_id }}
state: "state value"
adcm_state
Это специальный ADCM-специфический модуль, предназначенный для добавления состояний различным объектам. Поддерживаются состояния кластеров, сервисов, компонентов, хостов и хостпровайдеров.
Использование service_name позволяет переключаться между сервисами.
Использование component_name позволяет переключаться между компонентами.
| Атрибут | Описание | Обязательность |
|---|---|---|
type |
Тип объекта. Возможные значения: |
Да |
state |
Значение состояния |
Да |
service_name |
Название сервиса |
Нет |
component_name |
Название компонента |
Нет |
host_id |
Идентификатор хоста, использующийся для удаления мультисостояний хоста от хостпровайдера |
Нет |
|
ПРИМЕЧАНИЕ
Вы можете изменить состояние сервиса из другого сервиса, но существует риск возникновения параллельных задач, изменяющих одно и то же состояние. Будьте внимательны.
|
Примеры
- adcm_state:
type: "cluster"
state: "state value"
register: out
- adcm_state:
type: "service"
service_name: "First"
state: "state value"
- adcm_state:
type: "component"
component_name: "another_component"
state: "state value"
- adcm_state:
type: "component"
service_name: "another service"
component_name: "another_component"
missing_ok: true
state: "state value"
- adcm_state:
type: "host"
host_id: {{ host_id }}
state: "state value"
adcm_check
Этот плагин разработан для логирования результатов проверок хранилища логов в формате JSON. Лог, содержащий эти результаты, также отображается в web-интерфейсе ADCM.
Каждый вызов плагина adcm_check добавляет запись в хранилище логов в формате JSON. Вы можете вызвать adcm_check с помощью одного идентификатора задачи (job identifier) любое количество раз для playbook.
| Атрибут | Описание | Обязательность |
|---|---|---|
group_title |
Название проверки группы |
Нет |
group_success_msg |
Описание успешного результата проверки группы |
Нет |
group_fail_msg |
Описание неуспешного результата проверки группы |
Нет |
title |
Название проверки |
Да |
result |
Результат проверки |
Да |
msg |
Описание результата проверки |
Да, если отсутствуют поля |
success_msg |
Описание успешного результата проверки |
Да, если отсутствует поле |
fail_msg |
Описание неуспешного результата проверки |
Да, если отсутствует поле |
severity |
Степень критичности неуспешного результата проверки. Используется при |
Нет |
Примеры
- name: ADCM Check
adcm_check:
title: "Check"
msg: "This is message"
result: no
severity: error
- name: ADCM Check
adcm_check:
title: "Check"
success_msg: "This is success message"
fail_msg: "This is fail message"
result: yes
- name: ADCM check
adcm_check:
group_title: "Group 1"
group_success_msg: "This is success message"
group_fail_msg: "This is fail message"
title: "Check"
msg: "This is message"
result: yes
adcm_custom_log
Этот плагин разработан для логирования результатов проверок хранилища логов в формате JSON или TXT. Лог, содержащий эти результаты, такжже отображается в ADCM.
Каждый вызов плагина adcm_custom_log добавляет запись в хранилище логов в формате JSON или TXT. Вы можете вызвать adcm_custom_log с помощью одного идентификатора задачи (job identifier) любое количество раз для playbook.
| Атрибут | Описание | Обязательность |
|---|---|---|
name |
Название лог-файла |
Да |
format |
Формат: |
Да |
path |
Путь к лог-файлу |
Да, если отсутствует поле |
content |
Text |
Да, если отсутствует поле |
adcm_config
Это специальный ADCM-специфический модуль, позволяющий изменять значения конфигурационных параметров и групп для различных объектов. Поддерживаются конфигурации кластеров, сервисов, компонентов, хостов и хостпровайдеров.
Для точной адресации параметров предусмотрены следующие возможности:
-
атрибут
service_nameиспользуется для выбора целевого сервиса или компонента; -
атрибут
component_nameпозволяет переходить на уровень управления отдельными компонентами.
| Атрибут | Описание | Обязательность |
|---|---|---|
type |
Тип объекта. Возможные значения: |
Да |
parameters |
Опция для объявления множества пар ключ/значение |
Нет |
key |
Название ключа |
Да, если отсутствует |
value |
Значение ключа. Может содержать несколько пар вида ключ/значение ( |
Нет |
active |
Опция для изменения состояния активируемой группы |
Нет |
service_name |
Название сервиса или компонента |
Да, если |
component_name |
Название компонента |
Да, если |
host_id |
Идентификатор хоста, использующийся для добавления конфигурации хоста от хостпровайдера |
Да, если |
|
ПРИМЕЧАНИЕ
|
Примеры
- adcm_config:
type: "service"
service_name: "First"
key: "some_int"
value: 111
register: out
- adcm_config:
type: "service"
service_name: "my service"
key: "some_activatable_group"
active: true
- adcm_config:
type: "cluster"
key: "some_map"
value:
key1: value1
key2: value2
- adcm_config:
type: "component"
component_name: "another_component"
key: "some_map"
value: value
- adcm_config:
type: "component"
service_name: "another service"
component_name: "another_component"
key: "key"
value: value
- adcm_config:
type: "host"
parameters:
- key: "some_group/some_string"
value: "string"
- key: "some_map"
value:
key1: value1
key2: value2
- key: "some_string"
value: "string"
- adcm_config:
type: "host"
host_id: {{ host_id }}
key: "{{ config.key }}"
value: "{{ config.value }}"
adcm_manage_revision
Этот плагин разработан для предоставления бандлу возможности проверять изменения значений конфигурационных параметров при применении конфигурации объекта (кластера, хостпровайдера, хоста, сервиса или компонента) и создавать ревизию конфигурации. Это позволяет реализовывать сложную логику развертывания, например, выполнять определенные задачи только в случае изменения значений конкретных параметров.
Основные возможности плагина:
-
Анализ изменений: сравнение текущих значений параметров с последней зафиксированной ревизией.
-
Отслеживание метаданных: фиксация изменений в активируемых группах (
type: group,activatable:true) и взаимоисключающих вложенных группах (type: selection_group). -
Управление ревизиями: сохранение примененной конфигурации в виде ревизии для отслеживания дальнейших изменений.
-
Поддержка операций над несколькими объектами: возможность обработки нескольких конфигураций в рамках одного запроса к базе данных.
| Атрибут | Описание | Обязательность |
|---|---|---|
operation |
Операция, выполняемая плагином. Возможные значения:
|
Да |
objects |
Список объектов, к конфигурациям которых будет применена указанная операция (см. структуру ниже) |
Да |
Параметры элементов списка objects:
-
type— тип объекта. Возможные значения:cluster,service,component,hostилиhostprovider. -
service_name— имя сервиса. Обязателен, еслиtypeпринимает значениеserviceилиcomponent. -
component_name— имя компонента. Обязателен, еслиtypeпринимает значениеcomponent.
Структура ответа
При выполнении операции get_primary_diff плагин формирует структуру ответа, корневой ключ которой зависит от типа объекта. Это позволяет однозначно идентифицировать данные для разных уровней конфигурации:
-
Кластер/хостпровайдер: данные (
diff,attr_diff) доступны в ключеCLUSTER. -
Сервис: данные вложены в словарь
servicesпо ключу с именем сервиса. -
Компонент: данные вложены в словарь
componentsпо ключуservice_name.component_name. -
Хост: данные вложены в словарь
HOSTSпо ключу с FQDN хоста.
Независимо от типа объекта информация об изменениях представлена двумя словарями: diff и attr_diff. Для каждого ключа в этих словарях значение задается в виде объекта value, содержащего список в формате [старое_значение, новое_значение].
-
diff— словарь изменений значений параметров. Ключами являются имена групп и параметров. Пример:[ "8080", "9090" ](порт изменен с8080на9090). -
attr_diff— словарь изменений атрибутов (метаданных) групп:-
active— изменение состояния активируемой группы. Пример:[ false, true ](группа была выключена и включена). -
selection— изменение выбранного значения вselection_group. Пример:[ "LDAP", "Internal" ].
Ключом является полный путь к группе. Пример:
main/auth_settings. -
|
ПРИМЕЧАНИЕ
|
Примеры
- name: Get difference between current/previous
adcm_manage_revision:
operation: get_primary_diff
objects:
- type: component
service_name: "kafka"
register: diff_result
- name: Set configuration as applied
adcm_manage_revision:
operation: set_primary_revision
objects:
- type: component
service_name: "kafka"
Возвращаемое значение get_primary_diff
changed: false
failed: false
services:
kafka:
attr_diff:
hdfs_tired_storage:
active:
value:
- false
- true
diff:
hdfs_tired_storage:
storage.hdfs.upload.buffer.size:
value:
- 8192
- 16384
server_properties:
log.dirs:
value:
- /kafka-logs
- - /data1/kafka-logs
- /data2/kafka-logs
В данном примере наглядно показано разделение изменений по типам:
-
В блоке
attr_diffотражены изменения значений групп (их метаданных). В приведенном примере активируемая группаhdfs_tired_storageбыла изменена сfalseнаtrue, то есть была включена. -
В блоке
diffотражены изменения значений конечных конфигурационных параметров. В приведенном примере:-
внутри активируемой группы
hdfs_tired_storageзначение параметраstorage.hdfs.upload.buffer.sizeбыло изменено с8192на16384; -
в группе
server_propertiesзначение параметраlog.dirs(типlist) было изменено с[/kafka-logs]на[/data1/kafka-logs, /data2/kafka-logs].
-
adcm_add_host
Этот модуль разработан для поддержки добавления новых хостов в базу данных ADCM. Модуль нужно запускать только в контексте хостпровайдера. Идентификатор хостпровайдера содержится в контексте.
| Атрибут | Описание | Обязательность |
|---|---|---|
fqdn |
Полное имя домена (Fully Qualified Domain Name, FQDN) нового хоста |
Да |
description |
Опциональное описание нового хоста |
Нет |
adcm_add_host_to_cluster
Этот модуль разработан для поддержки добавления существующих хостов в кластер внутри базы данных ADCM. Модуль нужно запускать только в контексте кластера, сервиса или компонента. Идентификатор кластера содержится в контексте.
| Атрибут | Описание | Обязательность |
|---|---|---|
fqdn |
Полное имя домена (Fully Qualified Domain Name, FQDN) нового хоста |
Необходимо указать |
host_id |
Идентификатор нового хоста в базе данных ADCM |
Необходимо указать |
adcm_remove_host_from_cluster
Этот модуль разработан для поддержки удаления хостов из кластера внутри базы данных ADCM. Модуль нужно запускать только в контексте кластера или сервиса. Идентификатор кластера содержится в контексте.
| Атрибут | Описание | Обязательность |
|---|---|---|
fqdn |
Полное имя домена (Fully Qualified Domain Name, FQDN) удаленного хоста |
Необходимо указать |
host_id |
Идентификатор удаленного хоста в базе данных ADCM |
Необходимо указать |
adcm_hc
Этот модуль разработан для поддержки изменения связи компонентов хостов (host-component map) для кластера. Вы можете нарушить ограничения компонента (component constraint) во время выполнения последовательности операций. Все ограничения проверяются только один раз во время выполнения последовательности операций. Модуль нужно запускать только в контексте кластера, сервиса или компонента. Идентификатор кластера содержится в контексте.
adcm_delete_service
Этот модуль разработан для поддержки удаления сервиса из базы данных ADCM. Модуль нужно запускать только в контексте кластера или сервиса. В случае сервисного контекста название сервиса содержится в контексте. В случае кластерного контекста название сервиса должно быть предоставлено.
| Атрибут | Описание | Обязательность |
|---|---|---|
service |
Название сервиса для контекста кластера |
Нет |
|
NOTE
В случае вызова данного модуля из контекста сервиса вызов модуля должен быть последним в списке задач Ansible, так как происходит удаление сервиса, в контексте которого запущен текущий playbook.
|
adcm_change_maintenance_mode
Этот модуль разработан для переключения режима обслуживания у хоста, сервиса либо компонента. Если объект находится в режиме обслуживания, то он переводится в обычный режим, и наоборот.
| Атрибут | Описание | Обязательность |
|---|---|---|
type |
Тип объекта. Возможные значения: |
Да |
value |
Значение для переключения режима обслуживания. Возможные значения: |
Да |
adcm_change_flag
Этот модуль разработан для управления флагами на хостах, сервисах, компонентах, кластерах и хостпровайдерах. Операция up формирует флаг по уникальному имени, операция down удаляет его.
| Атрибут | Описание | Обязательность |
|---|---|---|
operation |
Операция с флагом. Возможные значения: |
Да |
name |
Внутреннее имя флага. Если этот параметр не указан, то в случае операции |
Нет |
msg |
Дополнительное сообщение флага для использования в отдельных случаях |
Нет |
objects |
Список сервисов или компонентов, для которых вы планируете установить/сбросить флаг (см. структуру ниже). Если этот параметр не указан, флаг будет установлен или сброшен на объекте в контексте action. Если вы хотите установить или сбросить флаг во всем кластере, требуется действие в контексте кластера |
Нет |
Параметры элементов списка objects:
-
type— тип объекта. Возможные значения:cluster,service,component,hostилиhostprovider. -
service_name— имя сервиса. Обязателен, еслиtypeпринимает значениеserviceилиcomponent. -
component_name— имя компонента. Обязателен, еслиtypeпринимает значениеcomponent.
Примеры
- name: "Raise a flag for kafka_broker"
adcm_change_flag:
operation: "up"
name: "adcm_kafka__broker_raise"
objects:
- type: component
service_name: "kafka"
component_name: "kafka_broker"
- name: "Down an outdated flag"
adcm_change_flag:
operation: "down"
name: "adcm_outdated_config"
objects:
- type: service
service_name: "{{ roles_generic_args.service_name }}"