使用 jmespath 将复杂数据结构中的多个数组连接起来

问题描述

我正在尝试将在复杂数据结构中描述的 NFS 导出 转换为 nfs-server 守护进程接受的配置选项,然后在 ansible 中使用。 >

我有:

    nfs_exports:
    - path: /export/home
      state: present
      options:
      - clients: "192.168.0.0/24"
        permissions:
        - "rw"
        - "sync"
        - "no_root_squash"
        - "fsid=0"
    - path: /export/public
      state: present
      options:
      - clients: "192.168.0.0/24"
        permissions:
        - "rw"
        - "sync"
        - "root_squash"
        - "fsid=0"
      - clients: "*"
        permissions:
        - "ro"
        - "async"
        - "all_squash"
        - "fsid=1"

必须变成:

        [
            {
                "options": "192.168.0.0/24(rw,sync,no_root_squash,fsid=0)","path": "/export/home","state": "present"
            },{
                "options": "192.168.0.0/24(rw,root_squash,fsid=0) *(ro,async,all_squash,fsid=1)","path": "/export/public","state": "present"
            }
        ]

到目前为止,我可以使用 {{ nfs_exports | json_query(query) }}

query: "[].{path:path,state:state,options:options.join(` `,[].join(``,[clients,`(`,join(`,`,permissions),`)`]))}"

得到

{
        "options": "192.168.0.0/24(rw,"state": "present"
},{
        "options": "192.168.0.0/24(rw,fsid=0)*(ro,"state": "present"
}

这可能很简单,但我无法通过最后一个选项加入,空格 ' ' 被删除。 因此,如果有人知道正确的查询,我们将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)