ansible/roles/node_exporter/tasks/main.yml

132 lines
3.9 KiB
YAML

---
- name: Install packages
ansible.builtin.package:
name: >-
{% if ansible_distribution in ["Fedora", "OpenBSD"] -%}
{{ "node_exporter" -}}
{% else -%}
{{ "golang-github-prometheus-node-exporter" -}}
{% endif -%}
state: installed
- name: Allow prometheus user to read private key
ansible.builtin.user:
name: >-
{% if ansible_distribution == "OpenBSD" -%}
{{ "_nodeexporter" -}}
{% else -%}
{{ "prometheus" -}}
{% endif -%}
groups: hostkey
append: true
create_home: false
notify: Restart node_exporter
- name: Create config directory
ansible.builtin.file:
path: /etc/node_exporter
state: directory
mode: "0755"
owner: root
group: "{{ ansible_wheel }}"
- name: Create web-config
ansible.builtin.template:
dest: /etc/node_exporter/web-config.yml
src: web-config.yml.j2
mode: "0644"
owner: root
group: "{{ ansible_wheel }}"
notify: Restart node_exporter
- name: Create textfile collector directory
ansible.builtin.file:
path: /var/db/node-exporter
state: directory
mode: 0755
owner: _nodeexporter
group: _nodeexporter
when: ansible_os_family == "OpenBSD"
- name: Create directory for textfile collector scripts
ansible.builtin.file:
path: /usr/local/libexec/node-exporter
state: directory
mode: 0755
owner: root
group: "{{ ansible_wheel }}"
- name: Add script for running textfile collector scripts
ansible.builtin.copy:
dest: /usr/local/sbin/node-exporter-run-textfile-collector
src: node-exporter-run-textfile-collector.sh
mode: 0755
owner: root
group: "{{ ansible_wheel }}"
- name: Add cron job for running textfile collector scripts
ansible.builtin.cron:
name: node-exporter-run-textfile-collector
job: /usr/local/sbin/node-exporter-run-textfile-collector
minute: "*/10"
- name: Modify config (pre 1.5.0)
ansible.builtin.lineinfile:
path: /etc/default/prometheus-node-exporter
regexp: "^ARGS="
line: >-
ARGS="--collector.filesystem.ignored-mount-points='^/(dev|proc|sys|run/(user|credentials/systemd-.+))($|/)'
--collector.netclass.ignored-devices='^(br-|docker|veth).+$'
--collector.netdev.device-exclude='^(br-|docker|veth).+$'
--web.config=/etc/node_exporter/web-config.yml
--collector.textfile.directory=/var/lib/prometheus/node-exporter"
notify: Restart node_exporter
when:
- ansible_os_family == "RedHat"
- ansible_distribution != "Fedora"
- name: Modify config
ansible.builtin.lineinfile:
path: /etc/default/prometheus-node-exporter
regexp: "^ARGS="
line: >-
ARGS="--collector.filesystem.ignored-mount-points='^/(dev|proc|sys|run/(user|credentials/systemd-.+))($|/)'
--collector.netclass.ignored-devices='^(br-|docker|veth).+$'
--collector.netdev.device-exclude='^(br-|docker|veth).+$'
--web.config.file=/etc/node_exporter/web-config.yml
--collector.textfile.directory=/var/lib/prometheus/node-exporter"
notify: Restart node_exporter
when:
- ansible_distribution == "Fedora"
- name: Install disk and raid monitoring scripts
ansible.builtin.copy:
dest: "/usr/local/libexec/node-exporter/{{ item }}"
src: "{{ item }}"
mode: "0755"
owner: root
group: "{{ ansible_wheel }}"
with_items:
- md_info.sh
- smartmon.sh
when:
- ansible_virtualization_role == "host"
- ansible_os_family == "RedHat"
- name: Enable service
ansible.builtin.service:
name: node_exporter
state: started
enabled: true
arguments: >-
--web.config.file=/etc/node_exporter/web-config.yml
--collector.textfile.directory=/var/db/node-exporter
notify: Restart node_exporter
when: ansible_os_family == "OpenBSD"
- name: Enable service
ansible.builtin.service:
name: prometheus-node-exporter
state: started
enabled: true
when: ansible_os_family == "RedHat"