From 6530caab7f7fd631d17165462bcb4b029804c48d Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Tue, 7 Jan 2025 08:37:08 +0000 Subject: [PATCH] Set up smartmontools Since we've added SMART alerts, we should install smartd as well. As most testing happens in VMs, the SMART functionality will only be enabled when testing==False. --- roles/float-base/handlers/main.yml | 5 +++++ roles/float-base/tasks/main.yml | 3 +++ roles/float-base/tasks/smart.yml | 18 ++++++++++++++++++ roles/float-base/templates/smartd.conf.j2 | 8 ++++++++ 4 files changed, 34 insertions(+) create mode 100644 roles/float-base/tasks/smart.yml create mode 100644 roles/float-base/templates/smartd.conf.j2 diff --git a/roles/float-base/handlers/main.yml b/roles/float-base/handlers/main.yml index ac47fa5b..07b630b1 100644 --- a/roles/float-base/handlers/main.yml +++ b/roles/float-base/handlers/main.yml @@ -50,6 +50,11 @@ name: osqueryd.service state: restarted +- name: restart smartd + systemd: + name: smartd.service + state: restarted + - name: reload firewall systemd: name: firewall.service diff --git a/roles/float-base/tasks/main.yml b/roles/float-base/tasks/main.yml index e47d2bb3..f090b873 100644 --- a/roles/float-base/tasks/main.yml +++ b/roles/float-base/tasks/main.yml @@ -94,6 +94,9 @@ - include_tasks: ipmi.yml when: ipmi_device.stat.exists == true +- include_tasks: smart.yml + when: "not (testing | default(True))" + - include_tasks: systemd.yml # Finally run some cleanups. diff --git a/roles/float-base/tasks/smart.yml b/roles/float-base/tasks/smart.yml new file mode 100644 index 00000000..601348c8 --- /dev/null +++ b/roles/float-base/tasks/smart.yml @@ -0,0 +1,18 @@ +--- + +- name: Install smartmontools + apt: + name: smartmontools + state: present + +- name: Configure smartd + template: + src: smartd.conf.j2 + dest: /etc/smartd.conf + notify: restart smartd + +- name: Disable smartd emails + file: + path: /etc/smartmontools/run.d/10mail + state: absent + diff --git a/roles/float-base/templates/smartd.conf.j2 b/roles/float-base/templates/smartd.conf.j2 new file mode 100644 index 00000000..b25ab7a0 --- /dev/null +++ b/roles/float-base/templates/smartd.conf.j2 @@ -0,0 +1,8 @@ +# Long tests once a month, on the 15th at 15.00 +# Short tests every Monday at 11.00 +DEFAULT -a -s (L/../15/./15|S/../../1/11) -m {{ alert_email | default('root') }} -M exec /usr/share/smartmontools/smartd-runner + +# Host specific configuration +{{ smartd_extra_config | default('') }} + +DEVICESCAN {{ '-d nvme' if 'nvme0n1' in ansible_devices else '' }} -- GitLab