小编Voj*_*vec的帖子

将 JMESpath 多选过滤器的结果元素与变量连接起来

我在 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
Run Code Online (Sandbox Code Playgroud)

我需要将它转换为users看起来像这样的平面数组(注意1每个name):

- name: foo1
  param: rock

- name: bar1
  param: paper 

- name: baz1
  param: scissors
Run Code Online (Sandbox Code Playgroud)

我使用Jinja过滤器json_query(它内部使用Python 中的JMESPath查询语言),如下所示:

{{ my_groups|json_query( "[*].users[*].{ name: name, param: param }" ) }}
Run Code Online (Sandbox Code Playgroud)

它返回上面提到的数组,但1当然没有名字。有什么方法可以用简单的字符串实现所需的连接吗?由于文档和示例,我尝试了一些变体,但没有运气,即:

{{ my_groups|json_query( "[*].users[*].{ name: …
Run Code Online (Sandbox Code Playgroud)

python jinja2 ansible jmespath

1
推荐指数
1
解决办法
5886
查看次数

标签 统计

ansible ×1

jinja2 ×1

jmespath ×1

python ×1