Ansible将混合列表结构转换为统一结构

时间:2016-01-22 14:26:15

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

在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可以很容易地将其输入模块。

我已经筋疲力尽了所有形状的循环,include,set_fact和jinja过滤器,我可以集合,但我相信一定有办法。

1 个答案:

答案 0 :(得分: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。如果你想在核心看到它,你可以在那里发表评论。