Ansible-从Github存储库下载最新版本的二进制文件 [英] Ansible - Download latest release binary from Github repo

查看:234
本文介绍了Ansible-从Github存储库下载最新版本的二进制文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用Ansible,请告知我如何从Github存储库下载最新版本的二进制文件.根据我目前的理解,这些步骤将是: 一种.获取最新版本的URL b.下载版本

With Ansible please advise how i could download the latest release binary from Github repository. As per my current understanding the steps would be: a. get URL of latest release b. download the release

我有类似的东西不能提供实际的版本(例如v0.11.53):

For a. I have something like which does not provide the actual release (ex. v0.11.53):

 - name: get latest Gogs release
  local_action:
    module: uri
    url: https://github.com/gogits/gogs/releases/latest
    method: GET
    follow_redirects: no
    status_code: 301
    register: release_url

对于b.我有下面的工作,但需要不断更新.而不是版本,我需要在a中设置一个变量:

For b. I have the below which works but needs constant updating. Instead of version i would need a variable set in a.:

- name: download latest
    become: yes
    become-user: "{{gogs_user}}"
    get_url:
     url: https://github.com/gogs/gogs/releases/download/v0.11.53/linux_amd64.tar.gz
    dest: "/home/{{gogs_user}}/linux_amd64.tar.gz"

谢谢!

推荐答案

Github有一个API可以操纵版本,即

Github has an API to manipulate the release which is documented.

因此,假设您想获得最新版本的ansible(属于ansible项目)

so imagine you want to get the latest release of ansible (which belong to the project ansible) you would

  • 调用网址https://api.github.com/repos/ansible/ansible/releases/latest
  • 获取这样的json结构
{
  "url": "https://api.github.com/repos/ansible/ansible/releases/5120666",
  "assets_url": "https://api.github.com/repos/ansible/ansible/releases/5120666/assets",
  "upload_url": "https://uploads.github.com/repos/ansible/ansible/releases/5120666/assets{?name,label}",
  "html_url": "https://github.com/ansible/ansible/releases/tag/v2.2.1.0-0.3.rc3",
  "id": 5120666,
  "node_id": "MDc6UmVsZWFzZTUxMjA2NjY=",
  "tag_name": "v2.2.1.0-0.3.rc3",
  "target_commitish": "devel",
  "name": "THESE ARE NOT OUR OFFICIAL RELEASES",
  ...
  },
  "prerelease": false,
  "created_at": "2017-01-09T16:49:01Z",
  "published_at": "2017-01-10T20:09:37Z",
  "assets": [

  ],
  "tarball_url": "https://api.github.com/repos/ansible/ansible/tarball/v2.2.1.0-0.3.rc3",
  "zipball_url": "https://api.github.com/repos/ansible/ansible/zipball/v2.2.1.0-0.3.rc3",
  "body": "For official tarballs go to https://releases.ansible.com\n"
}

  • 获取键tarball_url
  • 的值
  • 下载刚刚检索到的密钥的值
    • get the value of the key tarball_url
    • download the value of the key retrieved just above
    • 在可以完成的Ansible代码中

      In ansible code that would do

      - hosts: localhost                                                     
        tasks:                                                               
      
        - uri:                                                               
            url: https://api.github.com/repos/ansible/ansible/releases/latest
            return_content: true                                             
          register: json_reponse                                             
      
        - get_url:                                                           
            url: "{{ json_reponse.json.tarball_url }}"                       
            dest: ./ansible-latest.tar.gz       
      

      我让您调整适当的参数来回答您的问题:)

      I let you adapt the proper parameters to answer your question :)

      这篇关于Ansible-从Github存储库下载最新版本的二进制文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆