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 / обязательный | В зависимости от значения |
Параметры ключевых слов
Здесь описаны параметры ключевых слов плагина поиска. В следующих примерах это значения 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 | Стратегия объединения для остальных типов. Это значение учитывается только в случае Варианты:
|
dict_merge string добавлено в community.general 12.5.0 | Поведение при обнаружении значений-словарей. Варианты:
|
groups list / elements=string добавлено в community.general 8.5.0 | Искать переменные на узлах, входящих в указанные группы. Это позволяет собирать части конфигурации с разных узлов (например, службы на одном узле и её базы данных на другом). |
initial_value any | Начальное значение. |
list_merge string добавлено в community.general 12.5.0 | Поведение при обнаружении значений-списков. Варианты:
|
list_transformations list / elements=any добавлено в community.general 12.5.0 | Преобразования, применяемые к спискам. Порядок определения соответствует порядку применения этих преобразований. Элементы могут быть словарями с указанными ниже ключами или строками с названием применяемого преобразования. По умолчанию: |
|
name string / обязательный |
Название преобразования списка. Варианты:
|
|
options dictionary |
Параметры в виде пар «ключ — значение». |
|
keep string |
Определяет, какие дубликаты (если есть) следует сохранить. Допустимо только в сочетании с преобразованием списка Варианты:
|
override string | Вернуть ошибку, вывести предупреждение или проигнорировать ситуацию, когда ключ перезаписывается. Поведение по умолчанию При использовании Варианты:
Конфигурация:
|
pattern_type string | Изменить способ поиска заданного шаблона. Варианты:
Конфигурация:
|
type_conflict_merge string добавлено в community.general 12.5.0 | Стратегия объединения при конфликте типов. Это значение учитывается только в случае Варианты:
|
Примечание
Перечисленные выше записи конфигурации для каждого типа записей (переменная 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 |
Ссылки на коллекцию
© 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