Files
ansible-playbooks/roles/disks/tasks/exporter.yml
T
Clément Désiles 61621715e0 fix(ansible): reference facts via ansible_facts to silence deprecation
INJECT_FACTS_AS_VARS auto-injection of top-level facts is deprecated and
removed in ansible-core 2.24. Use ansible_facts['architecture'] and
ansible_facts['date_time']['epoch'] instead.
2026-09-21 09:59:03 +02:00

87 lines
2.8 KiB
YAML

---
# Prometheus S.M.A.R.T. exporter (optional, gated by smartctl_exporter_enabled).
# Downloads the checksum-verified prometheus-community/smartctl_exporter static
# binary and runs it as a hardened root systemd service (required to read raw
# S.M.A.R.T. attributes from block devices via smartctl).
- name: Install smartmontools
ansible.builtin.package:
name: smartmontools
state: present
- name: Map CPU architecture to release asset
ansible.builtin.set_fact:
smartctl_exporter_arch: >-
{{ {
'x86_64': 'amd64',
'aarch64': 'arm64',
'armv7l': 'armv7',
'armv6l': 'armv6',
'i386': '386',
'i686': '386'
}[ansible_facts['architecture']] }}
- name: Set release filenames
ansible.builtin.set_fact:
smartctl_exporter_archive: "smartctl_exporter-{{ smartctl_exporter_version }}.linux-{{ smartctl_exporter_arch }}.tar.gz"
smartctl_exporter_extracted: "smartctl_exporter-{{ smartctl_exporter_version }}.linux-{{ smartctl_exporter_arch }}"
smartctl_exporter_release_base: "https://github.com/prometheus-community/smartctl_exporter/releases/download/v{{ smartctl_exporter_version }}"
- name: Download smartctl_exporter release
ansible.builtin.get_url:
url: "{{ smartctl_exporter_release_base }}/{{ smartctl_exporter_archive }}"
dest: "/tmp/{{ smartctl_exporter_archive }}"
mode: "0644"
- name: Download release checksums
ansible.builtin.get_url:
url: "{{ smartctl_exporter_release_base }}/sha256sums.txt"
dest: /tmp/smartctl_exporter_sha256sums.txt
mode: "0644"
- name: Verify release archive checksum
ansible.builtin.command: "sha256sum -c --ignore-missing smartctl_exporter_sha256sums.txt"
args:
chdir: /tmp
changed_when: false
- name: Extract smartctl_exporter release
ansible.builtin.unarchive:
src: "/tmp/{{ smartctl_exporter_archive }}"
dest: /tmp
remote_src: true
- name: Install smartctl_exporter binary
ansible.builtin.copy:
src: "/tmp/{{ smartctl_exporter_extracted }}/smartctl_exporter"
dest: "{{ smartctl_exporter_binary_dir }}/smartctl_exporter"
remote_src: true
owner: root
group: root
mode: "0755"
- name: Clean up temporary files
ansible.builtin.file:
path: "{{ item }}"
state: absent
loop:
- "/tmp/{{ smartctl_exporter_archive }}"
- "/tmp/{{ smartctl_exporter_extracted }}"
- /tmp/smartctl_exporter_sha256sums.txt
- name: Deploy smartctl_exporter systemd unit
ansible.builtin.template:
src: smartctl_exporter.service.j2
dest: /etc/systemd/system/smartctl_exporter.service
owner: root
group: root
mode: "0644"
notify: Restart smartctl exporter
- name: Enable and start smartctl_exporter
ansible.builtin.systemd:
name: smartctl_exporter
enabled: true
state: started
daemon_reload: true