首页 > 解决方案 > ansible:从 url 中获取字符串

问题描述

我正在尝试根据发布页面自动将 node_exporter 安装到最新版本。

我有:https://api.github.com/repos/prometheus/node_exporter/releases/latest 作为源,并希望“tag_name”变量作为我的操作的结果,用于检查版本是最新的。

如何检索版本号?

到目前为止我的代码:

    - name: fetch version test
      debug: msg="{{item}}"
      loop: "{{ lookup('url', 'https://api.github.com/repos/prometheus/node_exporter/releases/latest', wantlist=True) }}"
      register: msgtest

输出如下:

..
    "msg": {
        "assets": [
            {
                "browser_download_url": "https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.darwin-amd64.tar.gz",
                "content_type": "application/gzip",

...
...
..
            "rocket": 0,
            "total_count": 11,
            "url": "https://api.github.com/repos/prometheus/node_exporter/releases/47430704/reactions"
        },
        "tag_name": "v1.2.2",
        "tarball_url": "https://api.github.com/repos/prometheus/node_exporter/tarball/v1.2.2",
        "target_commitish": "26645363b486e12be40af7ce4fc91e731a33104e",
        "upload_url": "https://uploads.github.com/repos/prometheus/node_exporter/releases/47430704/assets{?name,label}",
        "url": "https://api.github.com/repos/prometheus/node_exporter/releases/47430704",
        "zipball_url": "https://api.github.com/repos/prometheus/node_exporter/zipball/v1.2.2"
    }
}

我不正确地理解如何解决我得到的结果。

标签: variablesurlansible

解决方案


这是我的结果:

- set_fact:
    version: "{{ lookup('url', 'https://api.github.com/repos/prometheus/node_exporter/releases/latest') }}"

- debug:
    var: version.tag_name

- name: "Set node_exporter version "
  set_fact:
    node_exporter_version: "{{ version.tag_name[1:] }}"

- name: fetch promethous packages
  unarchive:
    src: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz"
    dest: /tmp
    remote_src: yes

推荐阅读