You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Ansible获取JSON子键最大值并将其存入变量?

优化Ansible获取JSON子键最大值并存储变量的方案

可以完全用Ansible原生模块和过滤器实现,无需依赖curl、jq等外部工具,具体实现如下:

- name: get latest checkmk version
  hosts: localhost
  gather_facts: no
  tasks:
    - name: fetch stable downloads json
      ansible.builtin.uri:
        url: https://download.checkmk.com/stable_downloads.json
        return_content: yes
      register: checkmk_downloads

    - name: extract and get latest version
      ansible.builtin.set_fact:
        latest_checkmk_version: "{{ checkmk_downloads.content | from_json | json_query('checkmk[].version') | sort(reverse=True) | first }}"

    - name: verify latest version (optional)
      ansible.builtin.debug:
        var: latest_checkmk_version

关键说明:

  • uri模块:替代curl,原生获取JSON内容并自动处理HTTP状态,比command模块更可靠,支持超时、认证等扩展配置。
  • 过滤器链:
    • from_json:将返回的JSON字符串解析为Ansible可操作的字典结构
    • json_query('checkmk[].version'):提取checkmk数组中所有元素的version字段,生成版本列表
    • sort(reverse=True):对版本列表进行降序排序
    • first:取排序后的第一个元素(即最大版本号)
  • 变量存储:结果直接存入latest_checkmk_version变量,后续任务可直接引用

这种方式完全依赖Ansible原生能力,无需目标主机安装额外工具,跨平台兼容性更好,且便于后续维护和扩展。

内容的提问来源于stack exchange,提问作者dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:17:05