community.general.keep_keys 过滤器 – 从列表中字典中保留特定键

注意

此过滤器插件是 community.general 集合(版本 10.1.0)的一部分。

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

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

要在 playbook 中使用它,请指定:community.general.keep_keys

community.general 9.1.0 中的新增功能

概要

  • 此过滤器仅保留提供的字典列表中的指定键。

输入

这描述了过滤器的输入,即 | community.general.keep_keys 之前的值。

参数

注释

输入

列表 / 元素=字典 / 必需

字典的列表。

顶层键必须是字符串。

关键字参数

这描述了过滤器的关键字参数。这些是以下示例中 key1=value1key2=value2 等值:input | community.general.keep_keys(key1=value1, key2=value2, ...)

参数

注释

matching_parameter

字符串

指定目标键的匹配选项。

选项

  • "ends_with":匹配以 target 项目之一结尾的键。

  • "equal" (默认):匹配恰好是 target 项目之一的键。

  • "regex":匹配与 target 中提供的正则表达式匹配的键。

    在这种情况下,target 必须是正则表达式字符串或包含单个正则表达式字符串的列表。

  • "starts_with":匹配以 target 项目之一开头的键。

target

任何 / 必需

要保留的单个键或键模式,或要保留的键或键模式列表。

如果 matching_parameter=regex,则必须提供一个模式。

示例

l:
  - {k0_x0: A0, k1_x1: B0, k2_x2: [C0], k3_x3: foo}
  - {k0_x0: A1, k1_x1: B1, k2_x2: [C1], k3_x3: bar}

# 1) By default match keys that equal any of the items in the target.
t: [k0_x0, k1_x1]
r: "{{ l | community.general.keep_keys(target=t) }}"

# 2) Match keys that start with any of the items in the target.
t: [k0, k1]
r: "{{ l | community.general.keep_keys(target=t, matching_parameter='starts_with') }}"

# 3) Match keys that end with any of the items in target.
t: [x0, x1]
r: "{{ l | community.general.keep_keys(target=t, matching_parameter='ends_with') }}"

# 4) Match keys by the regex.
t: ['^.*[01]_x.*$']
r: "{{ l | community.general.keep_keys(target=t, matching_parameter='regex') }}"

# 5) Match keys by the regex.
t: '^.*[01]_x.*$'
r: "{{ l | community.general.keep_keys(target=t, matching_parameter='regex') }}"

# The results of above examples 1-5 are all the same.
r:
  - {k0_x0: A0, k1_x1: B0}
  - {k0_x0: A1, k1_x1: B1}

# 6) By default match keys that equal the target.
t: k0_x0
r: "{{ l | community.general.keep_keys(target=t) }}"

# 7) Match keys that start with the target.
t: k0
r: "{{ l | community.general.keep_keys(target=t, matching_parameter='starts_with') }}"

# 8) Match keys that end with the target.
t: x0
r: "{{ l | community.general.keep_keys(target=t, matching_parameter='ends_with') }}"

# 9) Match keys by the regex.
t: '^.*0_x.*$'
r: "{{ l | community.general.keep_keys(target=t, matching_parameter='regex') }}"

# The results of above examples 6-9 are all the same.
r:
  - {k0_x0: A0}
  - {k0_x0: A1}

返回值

描述

返回值

列表 / 元素=字典

包含选定键的字典列表。

返回:成功

作者

  • Vladimir Botka (@vbotka)

  • Felix Fontein (@felixfontein)

提示

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