在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过滤器,我可以集合,但我相信一定有办法。
答案 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。如果你想在核心看到它,你可以在那里发表评论。