From 92f4e5c387007197852fc1bf9e7d473be40e7550 Mon Sep 17 00:00:00 2001 From: ifoster Date: Thu, 31 Jul 2025 16:41:19 +0000 Subject: [PATCH] Add playbooks/install-node-exporter.yml --- playbooks/install-node-exporter.yml | 79 +++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 playbooks/install-node-exporter.yml diff --git a/playbooks/install-node-exporter.yml b/playbooks/install-node-exporter.yml new file mode 100644 index 0000000..af0d7dd --- /dev/null +++ b/playbooks/install-node-exporter.yml @@ -0,0 +1,79 @@ +- name: Install Node Exporter from binary + hosts: all + become: true + + vars: + node_exporter_version: "1.9.1" + node_exporter_user: "node_exporter" + node_exporter_listen: "0.0.0.0:9100" + node_exporter_bin_dir: "/usr/local/bin" + node_exporter_service_path: "/etc/systemd/system/node_exporter.service" + node_exporter_arch_map: + x86_64: "amd64" + aarch64: "arm64" + armv7l: "armv7" + node_exporter_arch: "{{ node_exporter_arch_map[ansible_architecture] | default('amd64') }}" + + tasks: + - name: Debug detected architecture + debug: + msg: "Detected architecture: {{ ansible_architecture }} -> using {{ node_exporter_arch }} build" + + - name: Ensure node_exporter user exists + user: + name: "{{ node_exporter_user }}" + shell: /usr/sbin/nologin + system: true + create_home: false + + - name: Download Node Exporter archive + get_url: + url: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-{{ node_exporter_arch }}.tar.gz" + dest: "/tmp/node_exporter.tar.gz" + mode: "0644" + + - name: Extract Node Exporter binary + unarchive: + src: "/tmp/node_exporter.tar.gz" + dest: "/tmp/" + remote_src: true + + - name: Move Node Exporter binary into place + command: mv /tmp/node_exporter-{{ node_exporter_version }}.linux-{{ node_exporter_arch }}/node_exporter {{ node_exporter_bin_dir }}/node_exporter + + - name: Set binary permissions + file: + path: "{{ node_exporter_bin_dir }}/node_exporter" + mode: "0755" + owner: root + group: root + + - name: Create systemd service + copy: + dest: "{{ node_exporter_service_path }}" + content: | + [Unit] + Description=Prometheus Node Exporter + After=network.target + + [Service] + User={{ node_exporter_user }} + ExecStart={{ node_exporter_bin_dir }}/node_exporter --web.listen-address={{ node_exporter_listen }} + Restart=always + + [Install] + WantedBy=multi-user.target + notify: Restart node_exporter + + - name: Enable and start node_exporter + systemd: + name: node_exporter + enabled: true + state: started + daemon_reload: true + + handlers: + - name: Restart node_exporter + systemd: + name: node_exporter + state: restarted