From 496fed357d75ec33a2841ca9244590d6aa9412a0 Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Fri, 5 Jul 2024 12:25:32 -0300 Subject: Feat: adds nodo::subsystem::sensors --- manifests/base/physical.pp | 66 +++------------------------------- manifests/subsystem/sensors.pp | 81 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 61 deletions(-) create mode 100644 manifests/subsystem/sensors.pp diff --git a/manifests/base/physical.pp b/manifests/base/physical.pp index 1eadbe9..035f5c7 100644 --- a/manifests/base/physical.pp +++ b/manifests/base/physical.pp @@ -1,73 +1,17 @@ class nodo::base::physical inherits nodo::base::host { - $smartmontools = lookup('nodo::smartmontools', undef, undef, true) + include nodo::subsystem::sensors - if $smartmontools == true { - class { 'smartmontools': } - } - - package { [ - 'lm-sensors', - ]: - ensure => present, - } - - $downtimed = lookup('nodo::downtimed', undef, undef, 'absent') - - # Useful to track downtimes + # Downtime monitoring # # Check https://tracker.debian.org/pkg/downtimed # https://packages.debian.org/bookworm/downtimed # https://dist.epipe.com/downtimed/ + + $downtimed = lookup('nodo::downtimed', undef, undef, 'absent') + package { [ 'downtimed', ]: ensure => $downtimed, } - - # Deprecated in favor of drivetemp - # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1002484 - package { [ - 'hddtemp', - ]: - ensure => $::lsbdistcodename ? { - 'wheezy' => present, - 'buster' => present, - 'bullseye' => present, - default => absent, - } - } - - # We'll implement drive temp module loading both for SysV and systemd based - # systems, to ensure this module is managed in either case. - # - # It also remains to be tested whether _both_ /etc/modules and /etc/modules-load.d - # are processed by recent systemd-based Debian systems; or if there are - # inconsistencies between the implementation and the documentation: - # - # https://wiki.debian.org/Modules#Automatic_loading_of_modules - # - # Anyway, having this configuration in both places does not seem to hurt (much). - $drivetemp = lookup('nodo::drivetemp', undef, undef, 'present') - - # Drivetemp: implementation for systems using SysV -- /etc/modules - modules(5) - file_line { 'etc-modules-drivetemp': - path => "/etc/modules", - line => "drivetemp", - ensure => $drivetemp, - } - - # Drivetemp: implementation using systemd's /etc/modules-load.d/ - modules-load.d(5) - # - # https://www.baeldung.com/linux/hdd-ssd-temperature - # https://askubuntu.com/questions/1426482/tool-to-monitor-hdd-temperature-in-ubuntu-server-22-04 - # https://wiki.archlinux.org/title/Lm_sensors#S.M.A.R.T._drive_temperature - # https://github.com/philipl/drivetemp - # https://wiki.archlinux.org/title/Kernel_module#Automatic_module_loading - file { '/etc/modules-load.d/drivetemp.conf': - ensure => $drivetemp, - owner => root, - group => root, - mode => '0644', - content => "drivetemp\n", - } } diff --git a/manifests/subsystem/sensors.pp b/manifests/subsystem/sensors.pp new file mode 100644 index 0000000..caa99ef --- /dev/null +++ b/manifests/subsystem/sensors.pp @@ -0,0 +1,81 @@ +class nodo::subsystem::sensors { + # + # SMART monitoring + # + + $smartmontools = lookup('nodo::smartmontools', undef, undef, true) + + if $smartmontools == true { + class { 'smartmontools': } + } + + # + # LM Sensors + # + + package { [ + 'lm-sensors', + ]: + ensure => present, + } + + # + # hddtemp + # + + # Deprecated in favor of drivetemp + # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1002484 + package { [ + 'hddtemp', + ]: + ensure => $::lsbdistcodename ? { + 'wheezy' => present, + 'buster' => present, + 'bullseye' => present, + default => absent, + } + } + + # + # drivetemp + # + # References: https://www.baeldung.com/linux/hdd-ssd-temperature + # https://askubuntu.com/questions/1426482/tool-to-monitor-hdd-temperature-in-ubuntu-server-22-04 + # https://wiki.archlinux.org/title/Lm_sensors#S.M.A.R.T._drive_temperature + # https://github.com/philipl/drivetemp + # + # We'll implement drive temp module loading both for SysV and systemd based + # systems, to ensure this module is managed in either case. + # + # It also remains to be tested whether _both_ /etc/modules and /etc/modules-load.d + # are processed by recent systemd-based Debian systems; or if there are + # inconsistencies between the implementation and the documentation: + # + # https://wiki.debian.org/Modules#Automatic_loading_of_modules + # + # Anyway, having this configuration in both places does not seem to hurt (much). + # + # Check also https://wiki.archlinux.org/title/Kernel_module#Automatic_module_loading + # https://unix.stackexchange.com/questions/189670/whats-the-difference-of-etc-modules-load-d-and-etc-modules + # + # FIXME: this logic should be moved to a nodo::subsystem::modprobe::module definition. + # + + $drivetemp = lookup('nodo::drivetemp', undef, undef, 'present') + + # Drivetemp module loading for systems using SysV -- /etc/modules - modules(5) + file_line { 'etc-modules-drivetemp': + path => "/etc/modules", + line => "drivetemp", + ensure => $drivetemp, + } + + # Drivetemp module loading using systemd's /etc/modules-load.d/ - modules-load.d(5) + file { '/etc/modules-load.d/drivetemp.conf': + ensure => $drivetemp, + owner => root, + group => root, + mode => '0644', + content => "drivetemp\n", + } +} -- cgit v1.2.3