local/roles/yq/tasks/RedHat.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'