52 lines
1.3 KiB
YAML
52 lines
1.3 KiB
YAML
---
|
|
- name: stat executable
|
|
stat:
|
|
path: '{{ansible_env.HOME}}/.local/bin/yq'
|
|
register: yq_stat
|
|
|
|
- name: get installed version
|
|
when: yq_stat.stat.exists
|
|
command: yq --version
|
|
changed_when: false
|
|
register: yq_version
|
|
|
|
- name: extract installed version
|
|
when: yq_stat.stat.exists
|
|
set_fact:
|
|
yq_installed_version:
|
|
'{{yq_version.stdout.strip() | regex_replace("^.*(\d+\.\d+\.\d+).*$", "\1")}}'
|
|
|
|
- name: get latest release
|
|
uri:
|
|
url: 'https://api.github.com/repos/mikefarah/yq/releases/latest'
|
|
register: latest
|
|
|
|
- name: determine if yq needs installed
|
|
set_fact:
|
|
yq_needs_installed:
|
|
'{{not yq_stat.stat.exists or yq_installed_version != latest.json.tag_name}}'
|
|
arch_dict: {x86_64: amd64, arm64: arm64}
|
|
|
|
- name: select asset name
|
|
when: yq_needs_installed
|
|
set_fact:
|
|
asset_query:
|
|
'[?contains(name, `yq_linux_{{arch_dict[ansible_architecture]}}`)] | [0]'
|
|
- name: select asset
|
|
when: yq_needs_installed
|
|
set_fact:
|
|
asset: '{{latest.json.assets | to_json | from_json | json_query(asset_query)}}'
|
|
|
|
- name: create directory
|
|
when: yq_needs_installed
|
|
file:
|
|
path: '{{ansible_env.HOME}}/.local/bin'
|
|
state: directory
|
|
|
|
- name: install executable
|
|
when: yq_needs_installed
|
|
get_url:
|
|
url: '{{asset.browser_download_url}}'
|
|
dest: '{{ansible_env.HOME}}/.local/bin/yq'
|
|
mode: '0755'
|