【问题标题】:Ansible transform mixed list structure to a uniform structureAnsible 将混合列表结构转换为统一结构
【发布时间】:2026-02-07 19:15:01
【问题描述】:

在 Ansible 中,如果我有一个具有以下混合结构的列表变量:

input_items:
    - mainkey: 'main.value.1'
      subkey: 'subvalue_1.1'

    - mainkey: 'main.value.2'
        group:
            - subkey: 'subvalue_2.1'
            - subkey: 'subvalue_2.2'

有没有办法将它转换成这样的扁平结构:

transformed:
    - mainkey: 'main.value.1'
      subkey: 'subvalue_1.1'

    - mainkey: 'main.value.2'
      subkey: 'subvalue_2.1'

    - mainkey: 'main.value.2'
      subkey: 'subvalue_2.2'

想法是允许更紧凑的结构来定义列表,然后将其转换为易于使用with_items 输入模块的扁平结构。

我已经用尽了我可以使用的所有形式的循环、包含、set_fact 和 jinja 过滤器,但我确信一定有办法。

【问题讨论】:

标签: ansible ansible-playbook ansible-2.x


【解决方案1】:

根据 udondan 的建议,我创建了一个过滤器插件来执行此操作。 Here is a gist with the full python code and example data。 我也有suggested it to the ansible google group for inclusion into core。如果您想在核心中看到它,可以在此处发表评论。

【讨论】: