我在 Ansible(YAML 格式)中有以下变量结构:
my_groups:
- name: g1
users:
- name: foo
param: rock
junk: whatever
- name: bar
param: paper
junk: whatever
- name: g2
users:
- name: baz
param: scissors
junk: whatever
我需要将它转换为users
看起来像这样的平面数组(注意1
每个中的name
):
- name: foo1
param: rock
- name: bar1
param: paper
- name: baz1
param: scissors
我使用Jinja过滤器json_query
(在 Python 中内部使用JMESPath查询语言),如下所示:
{{ my_groups|json_query( "[*].users[*].{ name: name, param: param }" ) }}
它返回上面提到的数组,但1
当然没有名称。有什么方法可以用一个简单的字符串实现所需的连接吗?由于文档和示例,我尝试了一些变体,但没有运气,即:
{{ my_groups|json_query( "[*].users[*].{ name: name + '1', param: param }" ) }}
简单的 Ansible 剧本可在pastebin获得