Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save celeroncool/cf1228540f19c86f987c8fed7e9dfcfe to your computer and use it in GitHub Desktop.
Save celeroncool/cf1228540f19c86f987c8fed7e9dfcfe to your computer and use it in GitHub Desktop.
---
- 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