Files
infra/ansible/roles/monitoring_exporter/tasks/main.yml
T
DmitryandClaude Opus 5 c676be81ec Capture current Ansible control plane state
Commit the accumulated infrastructure work that was living only in the
working tree: monitoring stack, emergency access/bot, gyro allocator,
grimmory, adguard, backup audit and the OpenCode agent definitions.

Also ignore Python bytecode, local archives and Nix/direnv artifacts.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GTocXkGUUazHdKKd3r9k71
2026-08-26 21:39:28 +03:00

122 lines
3.2 KiB
YAML

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