使用 Ansible 获取 json 键的最高值

问题描述 投票:0回答: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

我如何改进这一点并将其存储在变量中?谢谢!

bash ansible
1个回答
0
投票

您可以使用

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 }}"
© www.soinside.com 2019 - 2024. All rights reserved.