代码之家  ›  专栏  ›  技术社区  ›  dan

使用Ansible获取json密钥的最高值

  •  0
  • dan  · 技术社区  · 1 年前

    我想用Ansible获得子密钥的最高值,并将其存储在一个变量中。我可以用bash命令来做这件事,我可以很容易地将其与Ansible一起使用,但我相信还有一种更Ansible的方法可以做到这一点。以下是我目前拥有的:

    - name: get latest version
      hosts: localhost
      gather_facts: no
      tasks:
        - name: get latest version
          ansible.builtin.command: curl --silent https://download.checkmk.com/stable_downloads.json | jq -r '.checkmk[].version' | sort -r | head -1
    

    我如何改进它并将其存储在变量中?非常感谢。

    1 回复  |  直到 1 年前
        1
  •  1
  •   larsks    1 年前

    您可以使用 uri 模块来获取远程URL,而不是调用 curl ; 你可以使用 json_query 过滤器以解析所述数据;你可以使用 sort last 筛选以获得所需的值。最后,您使用 set_fact 用于将值存储在变量中的模块:

    - name: get latest version
      hosts: localhost
      gather_facts: false
      tasks:
        - name: get latest version
          uri:
            url: https://download.checkmk.com/stable_downloads.json
          register: version
    
        - set_fact:
            chkmk_version: "{{ version.json|json_query('checkmk.*.version')|sort|last }}"
    
        - debug:
            msg: "Latest checkmk version: {{ chkmk_version }}"