我想使用 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
我如何改进这一点并将其存储在变量中?谢谢!
您可以使用
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 }}"