Created
July 11, 2025 06:20
-
-
Save celeroncool/cf1228540f19c86f987c8fed7e9dfcfe to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
- name: Install Prometheus Node Exporter | |
hosts: all | |
become: yes | |
vars: | |
node_exporter_version: "1.9.1" | |
node_exporter_user: "pve-exporter" | |
node_exporter_binary_path: "/usr/local/bin/node_exporter" | |
node_exporter_port: "9100" | |
tasks: | |
- name: Download node_exporter | |
get_url: | |
url: "https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz" | |
dest: "/tmp/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz" | |
mode: '0644' | |
- name: Extract node_exporter | |
unarchive: | |
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz" | |
dest: "/tmp" | |
remote_src: yes | |
- name: Copy node_exporter binary | |
copy: | |
src: "/tmp/node_exporter-{{ node_exporter_version }}.linux-amd64/node_exporter" | |
dest: "{{ node_exporter_binary_path }}" | |
mode: '0755' | |
owner: root | |
group: root | |
remote_src: yes | |
- name: Create node_exporter user | |
user: | |
name: "{{ node_exporter_user }}" | |
shell: /bin/false | |
system: yes | |
create_home: no | |
- name: Create systemd service file | |
copy: | |
dest: /etc/systemd/system/prometheus-node-exporter.service | |
content: | | |
[Unit] | |
Description=Node Exporter | |
Wants=network-online.target | |
After=network-online.target | |
[Service] | |
User={{ node_exporter_user }} | |
Group={{ node_exporter_user }} | |
Type=simple | |
Restart=on-failure | |
RestartSec=5s | |
ExecStart={{ node_exporter_binary_path }} | |
[Install] | |
WantedBy=multi-user.target | |
mode: '0644' | |
notify: reload systemd | |
- name: Clean up temporary files | |
file: | |
path: "{{ item }}" | |
state: absent | |
loop: | |
- "/tmp/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz" | |
- "/tmp/node_exporter-{{ node_exporter_version }}.linux-amd64" | |
- name: Enable and start prometheus-node-exporter service | |
systemd: | |
name: prometheus-node-exporter | |
enabled: yes | |
state: started | |
daemon_reload: yes | |
- name: Wait for service to start | |
wait_for: | |
port: "{{ node_exporter_port }}" | |
delay: 5 | |
timeout: 30 | |
- name: Check if port 9100 is listening | |
shell: netstat -tlnp | grep :{{ node_exporter_port }} | |
register: netstat_result | |
changed_when: false | |
- name: Display port status | |
debug: | |
msg: "Node Exporter is listening on port {{ node_exporter_port }}: {{ netstat_result.stdout }}" | |
handlers: | |
- name: reload systemd | |
systemd: | |
daemon_reload: yes |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment