--- - 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"