community.general.merge_variables 查询 – 合并名称匹配给定模式的变量

注意

此查询插件是 community.general 集合 (版本 10.1.0) 的一部分。

如果您使用的是 ansible 包,则您可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.general

要在剧本中使用它,请指定:community.general.merge_variables

community.general 6.5.0 中的新增功能

概要

  • 此查询返回作用域内所有匹配给定前缀、后缀或正则表达式(可选)的变量的合并结果。

术语

参数

注释

术语

列表 / 元素=字符串 / 必需

根据 pattern_type 的值,这是一个前缀、后缀或正则表达式的列表,将用于匹配应合并的所有变量。

关键字参数

这描述了查询的关键字参数。这些是在以下示例中的值 key1=value1key2=value2 等:lookup('community.general.merge_variables', key1=value1, key2=value2, ...)query('community.general.merge_variables', key1=value1, key2=value2, ...)

参数

注释

列表 / 元素=字符串

community.general 8.5.0 中新增

搜索属于给定组的主机上的变量。这允许收集不同主机上的配置片段(例如,主机上的服务及其数据库在另一台主机上)。

初始值

任意

一个开始的初始值。

覆盖

字符串

当键被覆盖时,返回错误、打印警告或忽略它。

默认行为 error 使插件在键将被覆盖时失败。

当使用 warnignore 时,请注意,在合并之前,变量按名称排序。此顺序中较后变量的键将覆盖此顺序中较早变量的相同名称的键。为了避免潜在的混淆,最好尽可能使用 override=error

选项

  • "error" ← (默认)

  • "warn"

  • "ignore"

配置

pattern_type

字符串

更改搜索指定模式的方式。

选项

  • "prefix"

  • "suffix"

  • "regex" ← (默认)

配置

备注

注意

  • 当关键字参数和位置参数一起使用时,位置参数必须列在关键字参数之前: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


# 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"

返回值

描述

返回值

任意

如果搜索匹配列表项,则返回列表。如果搜索匹配字典,则返回字典。

返回:成功

作者

  • Roy Lenferink (@rlenferink)

  • Mark Ettema (@m-a-r-k-e)

  • Alexander Petrenz (@alpex8)

提示

每个条目类型的配置条目具有从低到高的优先级顺序。例如,列表中较低的变量将覆盖较高的变量。