Manage resource limits of services (#13)
[puppet_systemd.git] / manifests / service_limits.pp
1 # -- Define: systemd::service_limits
2 # Creates a custom config file and reloads systemd
3 define systemd::service_limits(
4   $ensure          = file,
5   $path            = '/etc/systemd/system',
6   $limits          = undef,
7   $source          = undef,
8   $restart_service = true
9 ) {
10   include ::systemd
11
12   if $limits {
13     validate_hash($limits)
14     $content = template('systemd/limits.erb')
15   }
16   else {
17     $content = undef
18   }
19
20   if $limits and $source {
21     fail('You may not supply both limits and source parameters to systemd::service_limits')
22   } elsif $limits == undef and $source == undef {
23     fail('You must supply either the limits or source parameter to systemd::service_limits')
24   }
25
26   file { "${path}/${title}.d/":
27     ensure => 'directory',
28     owner  => 'root',
29     group  => 'root',
30   }
31   ->
32   file { "${path}/${title}.d/limits.conf":
33     ensure  => $ensure,
34     content => $content,
35     source  => $source,
36     owner   => 'root',
37     group   => 'root',
38     mode    => '0444',
39     notify  => Exec['systemctl-daemon-reload'],
40   }
41
42   if $restart_service {
43     exec { "systemctl restart ${title}":
44       path        => $::path,
45       refreshonly => true,
46       subscribe   => File["${path}/${title}.d/limits.conf"],
47       require     => Exec['systemctl-daemon-reload'],
48     }
49   }
50 }