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

Ansible如何从GitHub接口获取node_exporter最新版本tag_name值

Ansible 提取 node_exporter 最新版本号实现方法

方案1:最简实现(无需循环、无需额外注册变量)

GitHub 最新版本接口返回的是单个 JSON 对象,无需用 loop 遍历,可直接通过 Jinja 语法提取字段:

- name: 获取 node_exporter 最新版本 tag
  debug:
    msg: "最新版本为:{{ (lookup('url', 'https://api.github.com/repos/prometheus/node_exporter/releases/latest') | from_json).tag_name }}"

说明:from_json 过滤器用于将接口返回的 JSON 字符串转换为可直接取属性的对象,直接取 tag_name 字段即可得到版本标识。

方案2:基于你现有代码的提取方式

如果你要保留当前的 loop + 注册变量的写法,可通过注册变量的层级结构取值:

- name: 从已有注册变量提取版本号
  debug:
    msg: "提取到的版本号为:{{ msgtest.results[0].item.tag_name }}"

说明:你添加了 wantlist=True 后 lookup 返回单元素列表,loop 遍历后注册的 msgtest 的 results 数组第一个元素的 item 字段就是接口返回的完整 JSON 对象,直接取 tag_name 即可。

可选:提取无前缀的纯版本号

如果需要去掉版本号开头的 v 前缀(比如得到 1.2.2 而非 v1.2.2),可搭配 replace 过滤器处理:

- name: 获取无v前缀的纯版本号
  debug:
    msg: "纯版本号为:{{ (lookup('url', 'https://api.github.com/repos/prometheus/node_exporter/releases/latest') | from_json).tag_name | replace('v', '') }}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:36:04