Spec-Zone.ru › Ansible

community.general.merge_variables lookup – Объединение переменных, имена которых соответствуют заданному шаблону

Примечание

Этот плагин поиска входит в коллекцию community.general (версия 13.1.0).

Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.

Для установки используйте: ansible-galaxy collection install community.general.

Чтобы использовать её в плейбуке, укажите: community.general.merge_variables.

Добавлено в community.general 6.5.0

  • Краткое описание
  • Аргументы
  • Параметры ключевых слов
  • Примечания
  • Примеры
  • Возвращаемое значение

Краткое описание

  • Этот плагин поиска возвращает объединённый результат всех переменных в области видимости, соответствующих заданным префиксам, суффиксам или регулярным выражениям (по желанию).

Аргументы

Параметр

Комментарии

Terms

list / elements=string / обязательный

В зависимости от значения pattern_type это список префиксов, суффиксов или регулярных выражений, используемых для поиска всех переменных, которые необходимо объединить.

Параметры ключевых слов

Здесь описаны параметры ключевых слов плагина поиска. В следующих примерах это значения key1=value1, key2=value2 и так далее: lookup('community.general.merge_variables', key1=value1, key2=value2, ...) и query('community.general.merge_variables', key1=value1, key2=value2, ...)

Параметр

Комментарии

default_merge

string

добавлено в community.general 12.5.0

Стратегия объединения для остальных типов.

Это значение учитывается только в случае override=warn или override=ignore.

Варианты:

  • "keep": Сохранить существующие значения.
  • "replace" (по умолчанию): Перезаписать существующие значения.

dict_merge

string

добавлено в community.general 12.5.0

Поведение при обнаружении значений-словарей.

Варианты:

  • "deep" (по умолчанию): Рекурсивно объединять словари.
  • "keep": Сохранять существующие словари.
  • "replace": Перезаписывать существующие словари.
  • "shallow": Объединять только значения верхнего уровня.

groups

list / elements=string

добавлено в community.general 8.5.0

Искать переменные на узлах, входящих в указанные группы. Это позволяет собирать части конфигурации с разных узлов (например, службы на одном узле и её базы данных на другом).

initial_value

any

Начальное значение.

list_merge

string

добавлено в community.general 12.5.0

Поведение при обнаружении значений-списков.

Варианты:

  • "append" (по умолчанию): Добавлять элементы в конец существующего списка.
  • "keep": Сохранять существующие списки.
  • "merge": Использовать индекс как ключ и объединять каждый элемент.
  • "prepend": Вставлять элементы в начало существующего списка.
  • "replace": Перезаписывать существующие списки.

list_transformations

list / elements=any

добавлено в community.general 12.5.0

Преобразования, применяемые к спискам.

Порядок определения соответствует порядку применения этих преобразований.

Элементы могут быть словарями с указанными ниже ключами или строками с названием применяемого преобразования.

По умолчанию: []

name

string / обязательный

Название преобразования списка.

Варианты:

  • "dedup": Удалить дубликаты из списков. Поддерживаемый параметр: keep.
  • "flatten": Сгладить списки, преобразовав вложенные списки в обычные. Дополнительные параметры не поддерживаются.

options

dictionary

Параметры в виде пар «ключ — значение».

keep

string

Определяет, какие дубликаты (если есть) следует сохранить.

Допустимо только в сочетании с преобразованием списка list_transformations[].name=dedup.

Варианты:

  • "first" (по умолчанию): Удалить дубликаты, кроме первого вхождения.
  • "last": Удалить дубликаты, кроме последнего вхождения.

override

string

Вернуть ошибку, вывести предупреждение или проигнорировать ситуацию, когда ключ перезаписывается.

Поведение по умолчанию error приводит к сбою плагина, если ключ будет перезаписан.

При использовании warn и ignore важно учитывать, что перед объединением переменные сортируются по имени. Ключи более поздних переменных в этом порядке перезаписывают одноимённые ключи более ранних переменных. Чтобы избежать возможной путаницы, по возможности лучше использовать override=error.

Варианты:

  • "error" ← (по умолчанию)
  • "warn"
  • "ignore"

Конфигурация:

  • Запись INI:

    [merge_variables_lookup]
    override = error
    
  • Переменная окружения: ANSIBLE_MERGE_VARIABLES_OVERRIDE

pattern_type

string

Изменить способ поиска заданного шаблона.

Варианты:

  • "prefix"
  • "suffix"
  • "regex" ← (по умолчанию)

Конфигурация:

  • Запись INI:

    [merge_variables_lookup]
    pattern_type = regex
    
  • Переменная окружения: ANSIBLE_MERGE_VARIABLES_PATTERN_TYPE

type_conflict_merge

string

добавлено в community.general 12.5.0

Стратегия объединения при конфликте типов.

Это значение учитывается только в случае override=warn или override=ignore.

Варианты:

  • "keep": Сохранить существующие значения.
  • "replace" (по умолчанию): Перезаписать существующие значения.

Примечание

Перечисленные выше записи конфигурации для каждого типа записей (переменная Ansible, переменная окружения и т. д.) упорядочены по приоритету от низкого к высокому. Например, переменная, расположенная ниже в списке, переопределяет переменную, расположенную выше. Типы записей также упорядочены по приоритету от низкого к высокому. Например, запись ansible.cfg (расположенная выше в списке) переопределяется переменной Ansible (расположенной ниже в списке).

Примечания

Примечание

  • При совместном использовании параметров ключевых слов и позиционных параметров позиционные параметры необходимо указывать перед параметрами ключевых слов: lookup('community.general.merge_variables', term1, term2, key1=value1, key2=value2) и query('community.general.merge_variables', term1, term2, key1=value1, key2=value2)

Примеры

# Some example variables, they can be defined anywhere as long as they are in scope
test_init_list:
  - "list init item 1"
  - "list init item 2"

testa__test_list:
  - "test a item 1"

testb__test_list:
  - "test b item 1"

testa__test_dict:
  ports:
    - 1

testb__test_dict:
  ports:
    - 3

testa_low_dict__test:
  a:
    a:
      x: low_value
      y: low_value
      list:
        - low_value
  b:
    - 1
    - 1
    - 2
    - 3

testb_high_dict__test:
  a:
    a:
      y: high_value
      z: high_value
      list:
        - high_value
  b:
    - 3
    - 4
    - 4
    - '5': value

# Merge variables that end with '__test_dict' and store the result in a variable 'example_a'
example_a: "{{ lookup('community.general.merge_variables', '__test_dict', pattern_type='suffix') }}"

# The variable example_a now contains:
# ports:
#   - 1
#   - 3

# Merge variables that match the '^.+__test_list$' regular expression, starting with an initial value and store the
# result in a variable 'example_b'
example_b: "{{ lookup('community.general.merge_variables', '^.+__test_list$', initial_value=test_init_list) }}"

# The variable example_b now contains:
#   - "list init item 1"
#   - "list init item 2"
#   - "test a item 1"
#   - "test b item 1"

# Shallow merge variables that end with '__test', insert list elements at the beginning of the list,
# remove duplicates from lists (keep the first occurrence), and store the result in a variable 'example_c'
example_c: "{{
  lookup(
    'community.general.merge_variables',
    '^.+__test$',
    dict_merge='shallow',
    list_merge='prepend',
    list_transformations=['dedup']) }}"

# The variable example_c now contains:
# a:
#   a:
#     y: high_value
#     z: high_value
#     list:
#       - high_value
# b:
#   - 3
#   - 4
#   - '5': value
#   - 1
#   - 2

# Deep merge variables that end with '__test', merge list elements by index, ignore overrides, apply the strategies
# 'keep' for type conflicts and 'replace' for other types, and store the result in a variable 'example_d'
example_d: "{{
  lookup(
    'community.general.merge_variables',
    '^.+__test$',
    dict_merge='deep',
    list_merge='merge',
    override='ignore',
    type_conflict_merge='keep',
    default_merge='replace') }}"

# The variable example_d now contains:
# a:
#   a:
#     x: low_value
#     y: high_value
#     list:
#       - high_value
#     z: high_value
# b:
#   - 3
#   - 4
#   - 4
#   - 3

Возвращаемое значение

Ключ

Описание

Возвращаемое значение

any

Если поиск находит элементы списка, возвращается список. Если поиск находит словари, возвращается словарь.

Возвращается: success

Авторы

  • Roy Lenferink (@rlenferink)
  • Mark Ettema (@m-a-r-k-e)
  • Alexander Petrenz (@alpex8)
  • Christoph Fiehe (@cfiehe)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Запросить помощь
  • Сообщить об ошибке
  • Предложить функцию
  • Связь

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/general/merge_variables_lookup.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API