From 77a4fdcc16771840d79b68474232aada6c242172 Mon Sep 17 00:00:00 2001 From: "Kenneth Benzie (Benie)" Date: Sun, 17 Aug 2025 22:10:44 +0100 Subject: [PATCH] Add nvtop role --- playbooks/LinuxCLI.yaml | 1 + roles/nvtop/tasks/install-appimage.yaml | 40 +++++++++++++++++++++++++ roles/nvtop/tasks/main.yaml | 10 +++++++ 3 files changed, 51 insertions(+) create mode 100644 roles/nvtop/tasks/install-appimage.yaml create mode 100644 roles/nvtop/tasks/main.yaml diff --git a/playbooks/LinuxCLI.yaml b/playbooks/LinuxCLI.yaml index e3e4c67..98e45f8 100644 --- a/playbooks/LinuxCLI.yaml +++ b/playbooks/LinuxCLI.yaml @@ -11,6 +11,7 @@ - vars/environment.yaml roles: - role: gdb + - role: nvtop - role: podman - role: system-info when: disable_systemd is not defined diff --git a/roles/nvtop/tasks/install-appimage.yaml b/roles/nvtop/tasks/install-appimage.yaml new file mode 100644 index 0000000..f57c00f --- /dev/null +++ b/roles/nvtop/tasks/install-appimage.yaml @@ -0,0 +1,40 @@ +--- +- name: get latest github release + uri: + url: https://api.github.com/repos/Syllo/nvtop/releases/latest + headers: '{{github_auth_headers}}' + register: latest + +- set_fact: + asset_query: '[?contains(name, `x86_64.AppImage`)] | [0]' + assets: '{{latest.json.assets}}' + latest_version: '{{latest.json.tag_name}}' + nvtop_exe: '/usr/local/bin/nvtop' + +- name: check if already installed + stat: + path: '{{nvtop_exe}}' + register: nvtop_stat + +- name: get installed version + when: nvtop_stat.stat.exists == True + command: '{{nvtop_exe}} --version' + register: nvtop_version_output + changed_when: false + +- when: nvtop_stat.stat.exists == True + set_fact: + installed_version: + '{{nvtop_version_output.stdout.strip() | regex_replace("^.*(\d+\.\d+\.\d+).*$", "\1")}}' + +- set_fact: + asset: '{{assets | to_json | from_json | json_query(asset_query)}}' + +- name: download executable + when: installed_version is not defined or installed_version != latest_version + become: true + get_url: + url: '{{asset.browser_download_url}}' + dest: '{{nvtop_exe}}' + mode: +x + environment: '{{proxy_environment}}' diff --git a/roles/nvtop/tasks/main.yaml b/roles/nvtop/tasks/main.yaml new file mode 100644 index 0000000..8a65a11 --- /dev/null +++ b/roles/nvtop/tasks/main.yaml @@ -0,0 +1,10 @@ +--- +- name: install dnf package + when: ansible_os_family == 'RedHat' + become: true + dnf: + state: latest + name: nvtop + +- when: ansible_os_family != 'RedHat' + include_tasks: install-appimage.yaml