community.general.replace_keys 过滤器 – 替换字典列表中的特定键
注意
此过滤器插件是 community.general 集合(版本 10.1.0)的一部分。
如果您使用的是 ansible 包,则可能已安装此集合。它不包含在 ansible-core 中。要检查是否已安装,请运行 ansible-galaxy collection list。
要安装它,请使用:ansible-galaxy collection install community.general。
要在 playbook 中使用它,请指定:community.general.replace_keys。
community.general 9.1.0 中的新增功能
概要
- 此过滤器替换提供的字典列表中的指定键。 
输入
这描述了过滤器的输入,即 | community.general.replace_keys 之前的值。
| 参数 | 注释 | 
|---|---|
| 字典的列表。 顶层键必须是字符串。 | 
关键字参数
这描述了过滤器的关键字参数。这些是以下示例中的值 key1=value1、key2=value2 等:input | community.general.replace_keys(key1=value1, key2=value2, ...)
| 参数 | 注释 | 
|---|---|
| 指定目标键的匹配选项。 选择 
 | |
| 具有属性  
 | |
| 匹配的键更改为。 | |
| 要更改的键或键模式。 
 对于匹配多个  | 
示例
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, replace keys that are equal any of the attributes before.
t:
  - {before: k0_x0, after: a0}
  - {before: k1_x1, after: a1}
r: "{{ l | community.general.replace_keys(target=t) }}"
# 2) Replace keys that starts with any of the attributes before.
t:
  - {before: k0, after: a0}
  - {before: k1, after: a1}
r: "{{ l | community.general.replace_keys(target=t, matching_parameter='starts_with') }}"
# 3) Replace keys that ends with any of the attributes before.
t:
  - {before: x0, after: a0}
  - {before: x1, after: a1}
r: "{{ l | community.general.replace_keys(target=t, matching_parameter='ends_with') }}"
# 4) Replace keys that match any regex of the attributes before.
t:
  - {before: "^.*0_x.*$", after: a0}
  - {before: "^.*1_x.*$", after: a1}
r: "{{ l | community.general.replace_keys(target=t, matching_parameter='regex') }}"
# The results of above examples 1-4 are all the same.
r:
  - {a0: A0, a1: B0, k2_x2: [C0], k3_x3: foo}
  - {a0: A1, a1: B1, k2_x2: [C1], k3_x3: bar}
# 5) If more keys match the same attribute before the last one will be used.
t:
  - {before: "^.*_x.*$", after: X}
r: "{{ l | community.general.replace_keys(target=t, matching_parameter='regex') }}"
# gives
r:
  - X: foo
  - X: bar
# 6) If there are items with equal attribute before the first one will be used.
t:
  - {before: "^.*_x.*$", after: X}
  - {before: "^.*_x.*$", after: Y}
r: "{{ l | community.general.replace_keys(target=t, matching_parameter='regex') }}"
# gives
r:
  - X: foo
  - X: bar
# 7) If there are more matches for a key the first one will be used.
l:
  - {aaa1: A, bbb1: B, ccc1: C}
  - {aaa2: D, bbb2: E, ccc2: F}
t:
  - {before: a, after: X}
  - {before: aa, after: Y}
r: "{{ l | community.general.replace_keys(target=t, matching_parameter='starts_with') }}"
# gives
r:
  - {X: A, bbb1: B, ccc1: C}
  - {X: D, bbb2: E, ccc2: F}
返回值
| 键 | 描述 | 
|---|---|
| 包含已替换键的字典列表。 返回: 成功 | 
