Manages the smartmontools package including the smartd daemon
Installs the smartmontools package
and enables the smartd service.
If your hardware supports it, smartd can automatically probe for the drives,
but if they are hidden behind a RAID controller, it will need additional help.
The module includes a facter plugin to identify drives hiding behind an LSI
MegaRAID/Dell PERC/Supermicro controller on Linux systems if you have the LSI
proprietary MegaCli tool installed; we don't have any FreeBSD machines with
this controller so haven't written the necessary code to use FreeBSD's standard
mfiutil(8) utility instead.
Currently, drives behind an LSI MegaRAID controller will be automatically
probed and added to the smartd configuration file, if the MegaCli utility
is installed. There is no way to turn this behavior off. This is arguably a
bug.
It is planned that in a future release the megaraid specific facts will be
migrated into the
puppet-megaraid module.
This is a fork of
csail/smartd that was
initially made primarily to fix support of probing SATA drives behind a LSI
Megaraid controllers. The author has been aware of the fork and it's hoped
that the two modules can be merged. Since the initial fork, a number of small
API changes have been made to improve usage.
The v2 API merges the v1 API's devices and device_options parameters
into a single parameter named devices, but with incompatible semantics to the
v1 API.
devices now accepts an Array of Hash. This is to allow multiple
smartd.conf entries for the same blockdev as is typically required for probing
through to individual disks behind a block device presented by a RAID
controller.
Note that devices used to accept a flat Array.
class{ 'smartd':
devices => [ '/dev/sg1', '/dev/sg2' ],
device_options => { '/dev/sg1' => '-o on -S on -a', '/dev/sg2' => '-o on -S on -a' },
}devices now accepts an Array of Hash.
class{ 'smartd':
devices => [
{ device => '/dev/sg1', options => '-o on -S on -a' },
{ device => '/dev/sg2', options => '-o on -S on -a' },
],
} include smartd class{ 'smartd': }All parameters are optional.
String defaults to: present
Standard Puppet ensure semantics (and supports purged state if your package
provider does). Valid values are: present,latest,absent,purged
String defaults to: smartmontools
Name of the smartmontools package.
String defaults to: smartd
Name of the smartmontools monitoring daemon.
String defaults to: running
State of the smartmontools monitoring daemon. Valid values are:
running,stopped
String defaults to: (OS-specific)
Path to the configuration file for the monitoring daemon.
Bool defaults to: true
Sets the DEVICESCAN directive in the smart daemon config file. Tells the
smart daemon to automatically detect all of the SMART-capable drives in the
system.
String defaults to: undef
Passes options to the DEVICESCAN directive. devicescan must equal true
for this to have any effect.
Array of Hash defaults to: []
Explicit list of raw block devices to check. Eg.
[{ device => '/dev/sda', options => '-I 194' }]String defaults to: root
Smart daemon notification email address.
String defaults to: daily
Smart daemon problem mail notification frequency. Valid values are:
daily,once,diminishing
Bool defaults to: true if $::smartmontools_version >= 5.43, otherwise false
Enables/disables the DEFAULT directive in the smartd.conf file. This
directive was added in the 5.43 release of smartmontools and is unsupported in
previous versions.
If enable_default is set to false the the values from the mail_to and warning_schedule parameters are set on the DEVICESCAN directive (if enabled) instead of the [absent] DEFAULT directive.
Example smartd.conf content based on this setting:
enable_default => true
# Managed by Puppet -- do not edit!
DEFAULT -m root -M daily
DEVICESCAN
enable_default => false
# Managed by Puppet -- do not edit!
DEVICESCAN -m root -M daily
Here is an example of the error message generated by the DEFFAULT directive
appearing in the configuration file of 5.42.
smartd 5.42 2011-10-20 r3458 [i686-linux-2.6.18-371.6.1.el5PAE] (local build)
Copyright (C) 2002-11 by Bruce Allen, http://smartmontools.sourceforge.net
Opened configuration file /etc/smartd.conf
Drive: DEFAULT, implied '-a' Directive on line 2 of file /etc/smartd.conf
Drive: DEVICESCAN, implied '-a' Directive on line 3 of file /etc/smartd.conf
Configuration file /etc/smartd.conf was parsed, found DEVICESCAN, scanning devices
Device: DEFAULT, unable to autodetect device type
This option could not be named default to be consistent with the naming
convention of the other parameters in this module due to this bug
PUP-2244 that affects puppet
2.7.x.
Note that RHEL5 ships with 5.42 while RHEL6 ships with 5.43.
String defaults to: undef
Additional arguments to be set on the DEFAULT directive.
If default is set to false, this parameter's value will be set on the
DEVICESCAN directive (if enabled) instead of the [absent] DEFAULT
directive.
class{ 'smartd':
ensure => 'present',
package_name => 'smartmontools',
service_name => 'smartd',
service_ensure => 'running',
config_file => '/etc/smartd.conf',
devicescan => true,
devicescan_options => '-H -m admin@example.com',
devices => [
{ device => '/dev/sg1', options => '-o on -S on -a' },
{ device => '/dev/sg2', options => '-o on -S on -a' },
],
mail_to => 'root',
warning_schedule => 'diminishing',
default => 'false',
default_options => '-H',
}---
smartd::mail_to: "root@%{::domain}"
smartd::devicescan: false
smartd::devices:
-
device: '/dev/cciss/c0d0'
options: '-d cciss,0 -a -o on -S on -s (S/../.././19|L/../../3/21)'
-
device: '/dev/cciss/c0d0'
options: '-d cciss,1 -a -o on -S on -s (S/../.././18|L/../../3/20)'
-
device: '/dev/sda'
options: '-a -o on -S on -s (S/../.././18|L/../../3/20|C/../.././19)'Path to the MegaCli executable. Example:
megacli => /usr/bin/MegaCli
Version string of the MegaCli executable. Example:
megacli_version => 8.07.07
The count of LSI MegaRAID adapters detected in the system. Note that this module presently only supports a single adapter per system. Example:
megaraid_adapters => 1
The LSI MegaRAID adapter firmware package string. Example:
megaraid_fw_package_build => 23.22.0-0012
The LSI MegaRAID adapter firmware version string. Example:
megaraid_fw_version => 3.340.05-2939
The LSI MegaRAID unique device ID(s) for all attached disks. Example:
megaraid_physical_drives => 116,117,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,200,201,202,203,204,205,206,207
The LSI MegaRAID unique device ID(s) for only attached SAS disks. Example:
megaraid_physical_drives_sas => 116,117,120,121,122,123,124,125,126,127,128,129,131,132,133,134,135,136,137,138,139,140,187,188,189,190,191,192,193,194,195,196,197,198,200,201,202,203,204,205,206,207
The LSI MegaRAID unique device ID(s) for only attached SATA disks. Example:
megaraid_physical_drives_sata => 141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186
The LSI MegaRAID product name string. Example:
megaraid_product_name => LSI MegaRAID SAS 9286CV-8e
The LSI MegaRAID serial number string. Example:
megaraid_serial => SV22925366
A listing of /dev/<foo> devices exported by a LSI MegaRAID controller. Example:
megaraid_virtual_drives => sda,sdb,sdc,sdd,sde,sdf,sdg,sdh,sdk,sdl
Path to the smartd executable. Example:
smartd => /usr/sbin/smartd
Version of the install smartmontools package. Example:
smartmontools_version => 5.43
These are the platforms that have had integration testing since the fork.
- el6.x
- el5.x
This module is versioned according to the Semantic Versioning 2.0.0 specification.
Please log tickets and issues at github
