From a61eec647a90d1cf4584aca16a591e25056fbcb2 Mon Sep 17 00:00:00 2001 From: Ahmed Abdelhalim Date: Mon, 2 Mar 2026 22:39:33 +0100 Subject: Create specific prometheus node exporter role --- configure.yml | 3 +++ host_vars/rpi5.local.yml | Bin 1896 -> 2061 bytes molecule/archlinux-gnome/converge.yml | 1 + molecule/archlinux/converge.yml | 1 + molecule/debian/converge.yml | 1 + molecule/raspberrypi/converge.yml | 1 + molecule/ubuntu/converge.yml | 1 + roles/prometheus-node-exporter/defaults/main.yml | 3 +++ roles/prometheus-node-exporter/handlers/main.yml | 6 +++++ roles/prometheus-node-exporter/meta/main.yml | 17 +++++++++++++ roles/prometheus-node-exporter/tasks/main.yml | 28 ++++++++++++++++++++++ roles/prometheus-node-exporter/vars/archlinux.yml | 2 ++ roles/prometheus-node-exporter/vars/debian.yml | 2 ++ 13 files changed, 66 insertions(+) create mode 100644 roles/prometheus-node-exporter/defaults/main.yml create mode 100644 roles/prometheus-node-exporter/handlers/main.yml create mode 100644 roles/prometheus-node-exporter/meta/main.yml create mode 100644 roles/prometheus-node-exporter/tasks/main.yml create mode 100644 roles/prometheus-node-exporter/vars/archlinux.yml create mode 100644 roles/prometheus-node-exporter/vars/debian.yml diff --git a/configure.yml b/configure.yml index e1fc93e2..e8d9b49b 100644 --- a/configure.yml +++ b/configure.yml @@ -47,6 +47,7 @@ - role: "microsoft-teams" - role: "gpu_driver" - role: "steam" + - role: "prometheus-node-exporter" - name: "Ubuntu configure" gather_facts: true @@ -80,6 +81,7 @@ - role: "obsidian" - role: "microsoft-teams" - role: "gnome-calendar" + - role: "prometheus-node-exporter" - name: "Raspberry Pi configure" gather_facts: true @@ -105,5 +107,6 @@ - role: "wg_portal" - role: "pihole" - role: "prometheus" + - role: "prometheus-node-exporter" - role: "grafana" - role: "neomutt" diff --git a/host_vars/rpi5.local.yml b/host_vars/rpi5.local.yml index ae59bfa1..6ce33273 100644 Binary files a/host_vars/rpi5.local.yml and b/host_vars/rpi5.local.yml differ diff --git a/molecule/archlinux-gnome/converge.yml b/molecule/archlinux-gnome/converge.yml index 8f939dd0..4f53ebd1 100644 --- a/molecule/archlinux-gnome/converge.yml +++ b/molecule/archlinux-gnome/converge.yml @@ -101,6 +101,7 @@ - role: "usbutils" - role: "nginx" - role: "prometheus" + - role: "prometheus-node-exporter" - role: "grafana" - role: "bluetui" - role: "wlctl" diff --git a/molecule/archlinux/converge.yml b/molecule/archlinux/converge.yml index 296d0dec..543ec1e1 100644 --- a/molecule/archlinux/converge.yml +++ b/molecule/archlinux/converge.yml @@ -102,4 +102,5 @@ - role: "usbutils" - role: "nginx" - role: "prometheus" + - role: "prometheus-node-exporter" - role: "grafana" diff --git a/molecule/debian/converge.yml b/molecule/debian/converge.yml index 5fd2c9c3..019348e9 100644 --- a/molecule/debian/converge.yml +++ b/molecule/debian/converge.yml @@ -88,6 +88,7 @@ - role: "ansible" - role: "nginx" - role: "prometheus" + - role: "prometheus-node-exporter" - role: "grafana" - role: "gnome" - role: "gnome-calendar" diff --git a/molecule/raspberrypi/converge.yml b/molecule/raspberrypi/converge.yml index 72c3962d..de126c52 100644 --- a/molecule/raspberrypi/converge.yml +++ b/molecule/raspberrypi/converge.yml @@ -85,6 +85,7 @@ - role: "wg_portal" - role: "pihole" - role: "prometheus" + - role: "prometheus-node-exporter" - role: "grafana" - role: "gnome" - role: "gnome-calendar" diff --git a/molecule/ubuntu/converge.yml b/molecule/ubuntu/converge.yml index d432e86d..4045abde 100644 --- a/molecule/ubuntu/converge.yml +++ b/molecule/ubuntu/converge.yml @@ -77,6 +77,7 @@ - role: "ansible" - role: "nginx" - role: "prometheus" + - role: "prometheus-node-exporter" - role: "grafana" - role: "gnome" - role: "gnome-calendar" diff --git a/roles/prometheus-node-exporter/defaults/main.yml b/roles/prometheus-node-exporter/defaults/main.yml new file mode 100644 index 00000000..d15999f0 --- /dev/null +++ b/roles/prometheus-node-exporter/defaults/main.yml @@ -0,0 +1,3 @@ +--- +node_exporter_host: "0.0.0.0" +node_exporter_port: 9100 diff --git a/roles/prometheus-node-exporter/handlers/main.yml b/roles/prometheus-node-exporter/handlers/main.yml new file mode 100644 index 00000000..4e995e59 --- /dev/null +++ b/roles/prometheus-node-exporter/handlers/main.yml @@ -0,0 +1,6 @@ +--- +- name: "Restart node-exporter" + become: true + ansible.builtin.systemd_service: + name: "prometheus-node-exporter" + state: "restarted" diff --git a/roles/prometheus-node-exporter/meta/main.yml b/roles/prometheus-node-exporter/meta/main.yml new file mode 100644 index 00000000..c94a573a --- /dev/null +++ b/roles/prometheus-node-exporter/meta/main.yml @@ -0,0 +1,17 @@ +--- +dependencies: [] +galaxy_info: + author: "a14m" + description: "Install and configure Prometheus node exporter" + license: "MIT" + min_ansible_version: "2.18" + platforms: + - name: "ArchLinux" + versions: + - "all" + - name: "Ubuntu" + versions: + - "noble" + - name: "Debian" + versions: + - "bookworm" diff --git a/roles/prometheus-node-exporter/tasks/main.yml b/roles/prometheus-node-exporter/tasks/main.yml new file mode 100644 index 00000000..dc222e3e --- /dev/null +++ b/roles/prometheus-node-exporter/tasks/main.yml @@ -0,0 +1,28 @@ +--- +- name: "Include OS-specific variables" + ansible.builtin.include_vars: "{{ ansible_facts['os_family'] | lower }}.yml" + +- name: "Ensure prometheus-node-exporter is installed" + become: true + ansible.builtin.package: + name: "prometheus-node-exporter" + state: "present" + +- name: "Configure node-exporter host/port via environment file" + become: true + ansible.builtin.copy: + content: | + NODE_EXPORTER_ARGS=" + --web.listen-address={{ node_exporter_host }}:{{ node_exporter_port }} + --collector.systemd + " + dest: "{{ node_exporter_env_file }}" + mode: "0644" + notify: "Restart node-exporter" + +- name: "Start and enable prometheus-node-exporter" + become: true + ansible.builtin.systemd_service: + name: "prometheus-node-exporter" + state: "started" + enabled: true diff --git a/roles/prometheus-node-exporter/vars/archlinux.yml b/roles/prometheus-node-exporter/vars/archlinux.yml new file mode 100644 index 00000000..e550c5da --- /dev/null +++ b/roles/prometheus-node-exporter/vars/archlinux.yml @@ -0,0 +1,2 @@ +--- +node_exporter_env_file: "/etc/conf.d/prometheus-node-exporter" diff --git a/roles/prometheus-node-exporter/vars/debian.yml b/roles/prometheus-node-exporter/vars/debian.yml new file mode 100644 index 00000000..dc59b0d6 --- /dev/null +++ b/roles/prometheus-node-exporter/vars/debian.yml @@ -0,0 +1,2 @@ +--- +node_exporter_env_file: "/etc/default/prometheus-node-exporter" -- cgit v1.2.3