diff --git a/manifests/screensaver/disable.pp b/manifests/screensaver/disable.pp new file mode 100644 index 0000000000000000000000000000000000000000..e33c69ac648fddb7167c95540a5169ba97ccd08b --- /dev/null +++ b/manifests/screensaver/disable.pp @@ -0,0 +1,53 @@ +# Copyright © 2017 Thomas Bellman, Linköping, Sweden +# Licensed under the GNU LGPL v3+; see the README file for more information. + + +/* + * Turn off the screensaver on the VGA console. + * This is useful in case of kernel crashes; if the screensaver was activated + * at the time of the crash, you can't see the crash message, and you can't + * deactivate the screensaver, since the kernel has died... + */ +class console::screensaver::disable +{ + # Need redirection to tty1 in case we have console=ttyS1 + $setterm_cmd = 'TERM=linux setterm -blank 0 -powerdown 0 >/dev/tty1' + + case $::initsystem + { + 'sysvinit', 'upstart': { + ensure_line { + 'console::screensaver::disable::setterm': + file => '/etc/rc.d/rc.local', + line => $setterm_cmd, + pattern => '(TERM=\S*\s)?(setterm.*-blank|setterm.*-powerdown).*'; + } + } + 'systemd': { + $lines = [ + '# This file is under Puppet control', + '', + '[Unit]', + 'Description=Disable screensaver on the console', + '', + '[Service]', + 'Type=oneshot', + "ExecStart=/bin/sh -c '${setterm_cmd}'", + '', + '[Install]', + 'WantedBy=basic.target', + ] + file { + '/etc/systemd/system/screensaver-disable.service': + ensure => file, + content => inline_template('<%=@lines.join("\n")+"\n" %>'), + owner => 'root', group => 'root', mode => '0444', + before => Service['screensaver-disable']; + } + service { + 'screensaver-disable': + enable => true, ensure => running; + } + } + } +}