Add node_exporter ansible role

This commit is contained in:
ionutboangiu
2024-08-05 12:01:24 +03:00
committed by Dan Christian Bogos
parent 76b7be1adc
commit cc25eae687
4 changed files with 88 additions and 0 deletions

View File

@@ -0,0 +1,7 @@
---
node_exporter_version: 1.8.2
node_exporter_user: node_exporter
node_exporter_install_dir: /opt/node_exporter
node_exporter_web_listen_address: 0.0.0.0:9100
node_exporter_service_enabled: false
node_exporter_service_state: stopped

View File

@@ -0,0 +1,8 @@
---
- name: Restart node_exporter
become: true
ansible.builtin.systemd_service:
name: node_exporter
state: restarted
daemon_reload: true
when: node_exporter_service_state == 'started'

View File

@@ -0,0 +1,58 @@
---
- name: Create node_exporter user
become: true
ansible.builtin.user:
name: '{{ node_exporter_user }}'
state: present
system: true
createhome: no
- name: Check current node_exporter version
ansible.builtin.command: '{{ node_exporter_install_dir }}/node_exporter --version'
register: node_exporter_current_version
ignore_errors: true
changed_when: false
- name: Remove existing node_exporter installation if version differs
become: true
ansible.builtin.file:
path: '{{ node_exporter_install_dir }}'
state: absent
when: node_exporter_current_version.rc == 0 and node_exporter_version not in node_exporter_current_version.stdout
- name: Create node_exporter installation directory
become: true
ansible.builtin.file:
path: '{{ node_exporter_install_dir }}'
state: directory
owner: '{{ node_exporter_user }}'
group: '{{ node_exporter_user }}'
mode: '0755'
- name: Download and extract node_exporter
become: true
ansible.builtin.unarchive:
src: 'https://github.com/prometheus/node_exporter/releases/download/v{{ node_exporter_version }}/node_exporter-{{ node_exporter_version }}.linux-amd64.tar.gz'
dest: '{{ node_exporter_install_dir }}'
remote_src: true
owner: '{{ node_exporter_user }}'
group: '{{ node_exporter_user }}'
extra_opts: [--strip-components=1]
notify: Restart node_exporter
when: node_exporter_current_version.rc != 0 or node_exporter_version not in node_exporter_current_version.stdout
- name: Create node_exporter systemd service file
become: true
ansible.builtin.template:
src: node_exporter.service.j2
dest: /etc/systemd/system/node_exporter.service
mode: '0644'
notify: Restart node_exporter
- name: Ensure node_exporter service is in desired state
become: true
ansible.builtin.systemd_service:
name: node_exporter
state: '{{ node_exporter_service_state }}'
enabled: '{{ node_exporter_service_enabled }}'
when: node_exporter_service_state == 'stopped' or node_exporter_service_enabled == false

View File

@@ -0,0 +1,15 @@
[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target
[Service]
User={{ node_exporter_user }}
Group={{ node_exporter_user }}
Type=simple
ExecStart={{ node_exporter_install_dir }}/node_exporter \
--web.listen-address={{ node_exporter_web_listen_address }}
Restart=always
[Install]
WantedBy=multi-user.target