--- - name: Install Node Exporter ansible.builtin.apt: name: prometheus-node-exporter state: present when: monitoring_exporter_install_node - name: Create Node Exporter textfile directory ansible.builtin.file: path: "{{ monitoring_exporter_textfile_dir }}" state: directory owner: root group: root mode: "0755" when: monitoring_exporter_install_node - name: Create Node Exporter systemd override directory ansible.builtin.file: path: /etc/systemd/system/prometheus-node-exporter.service.d state: directory owner: root group: root mode: "0755" when: monitoring_exporter_install_node - name: Configure Node Exporter collectors ansible.builtin.copy: dest: /etc/systemd/system/prometheus-node-exporter.service.d/override.conf owner: root group: root mode: "0644" content: | [Service] ExecStart= ExecStart=/usr/bin/prometheus-node-exporter --web.listen-address={{ monitoring_exporter_node_listen_address }} --collector.systemd --collector.textfile.directory={{ monitoring_exporter_textfile_dir }} when: monitoring_exporter_install_node notify: - reload systemd - restart node exporter - name: Ensure Node Exporter is enabled and running ansible.builtin.systemd: name: prometheus-node-exporter enabled: true state: started when: monitoring_exporter_install_node - name: Install SMART Exporter dependencies ansible.builtin.apt: name: - jq - smartmontools state: present when: monitoring_exporter_install_smart - name: Remove obsolete SMART Exporter container unit ansible.builtin.systemd: name: homelab-smartctl-exporter enabled: false state: stopped failed_when: false when: monitoring_exporter_install_smart - name: Install SMART metric collection script ansible.builtin.template: src: smartctl-metrics.sh.j2 dest: /usr/local/sbin/homelab-smartctl-metrics owner: root group: root mode: "0755" when: monitoring_exporter_install_smart - name: Install SMART metric collection service ansible.builtin.copy: dest: /etc/systemd/system/homelab-smartctl-metrics.service owner: root group: root mode: "0644" content: | [Unit] Description=Publish SMART metrics for Node Exporter [Service] Type=oneshot ExecStart=/usr/local/sbin/homelab-smartctl-metrics when: monitoring_exporter_install_smart notify: reload systemd - name: Install SMART metric collection timer ansible.builtin.copy: dest: /etc/systemd/system/homelab-smartctl-metrics.timer owner: root group: root mode: "0644" content: | [Unit] Description=Collect SMART metrics every 15 minutes [Timer] OnBootSec=2m OnUnitActiveSec=15m Persistent=true [Install] WantedBy=multi-user.target when: monitoring_exporter_install_smart notify: reload systemd - name: Enable SMART metric collection timer ansible.builtin.systemd: name: homelab-smartctl-metrics.timer daemon_reload: true enabled: true state: started when: monitoring_exporter_install_smart - name: Run initial SMART metric collection ansible.builtin.systemd: name: homelab-smartctl-metrics.service state: started when: monitoring_exporter_install_smart