From 040f1acf02dc379e3fe577d900b96b47a38a714a Mon Sep 17 00:00:00 2001 From: Felix Bechstein Date: Wed, 27 Jan 2016 08:18:12 +0100 Subject: Shortcut for creating unit files / tmpfiles This change allows creating unit files and reloading systemd with just a single resource. It's fully compatible with the manual behavior. --- manifests/tmpfile.pp | 20 ++++++++++++++++++++ manifests/unit_file.pp | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 manifests/tmpfile.pp create mode 100644 manifests/unit_file.pp (limited to 'manifests') diff --git a/manifests/tmpfile.pp b/manifests/tmpfile.pp new file mode 100644 index 0000000..c4d1a05 --- /dev/null +++ b/manifests/tmpfile.pp @@ -0,0 +1,20 @@ +# -- Define: systemd::tmpfile +# Creates a tmpfile and reloads systemd +define systemd::tmpfile( + $ensure = file, + $path = '/etc/tmpfiles.d', + $content = undef, + $source = undef, +) { + include ::systemd + + file { "${path}/${title}": + ensure => $ensure, + content => $content, + source => $source, + owner => 'root', + group => 'root', + mode => '0444', + notify => Exec['systemd-tmpfiles-create'], + } +} \ No newline at end of file diff --git a/manifests/unit_file.pp b/manifests/unit_file.pp new file mode 100644 index 0000000..0f659db --- /dev/null +++ b/manifests/unit_file.pp @@ -0,0 +1,20 @@ +# -- Define: systemd::unit_file +# Creates a unit file and reloads systemd +define systemd::unit_file( + $ensure = file, + $path = '/etc/systemd/system', + $content = undef, + $source = undef, +) { + include ::systemd + + file { "${path}/${title}": + ensure => $ensure, + content => $content, + source => $source, + owner => 'root', + group => 'root', + mode => '0444', + notify => Exec['systemctl-daemon-reload'], + } +} \ No newline at end of file -- cgit v1.2.3 From 57283b23aafb47608501ae0ac68c1defa7f4065c Mon Sep 17 00:00:00 2001 From: Theo Chatzimichos Date: Tue, 16 Aug 2016 17:05:47 +0200 Subject: Add target param for the unit file (#10) This is useful in case the Unit file is a symlink to another one --- manifests/unit_file.pp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'manifests') diff --git a/manifests/unit_file.pp b/manifests/unit_file.pp index 0f659db..94bc845 100644 --- a/manifests/unit_file.pp +++ b/manifests/unit_file.pp @@ -5,6 +5,7 @@ define systemd::unit_file( $path = '/etc/systemd/system', $content = undef, $source = undef, + $target = undef, ) { include ::systemd @@ -12,9 +13,10 @@ define systemd::unit_file( ensure => $ensure, content => $content, source => $source, + target => $target, owner => 'root', group => 'root', mode => '0444', notify => Exec['systemctl-daemon-reload'], } -} \ No newline at end of file +} -- cgit v1.2.3 From ec94e54f14c214a5423681e90b99d6e73094bfeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rurik=20Yl=C3=A4-Onnenvuori?= Date: Mon, 31 Oct 2016 13:03:21 +0100 Subject: Manage resource limits of services (#13) User can configure resource limits for services started by systemd --- manifests/init.pp | 8 +++++++- manifests/service_limits.pp | 50 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 manifests/service_limits.pp (limited to 'manifests') diff --git a/manifests/init.pp b/manifests/init.pp index 5e6ad79..e669f09 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -1,4 +1,8 @@ -class systemd { +# -- Class systemd +# This module allows triggering systemd commands once for all modules +class systemd ( + $service_limits = {} +){ Exec { refreshonly => true, @@ -15,4 +19,6 @@ class systemd { command => 'systemd-tmpfiles --create', } + create_resources('systemd::service_limits', $service_limits, {}) + } diff --git a/manifests/service_limits.pp b/manifests/service_limits.pp new file mode 100644 index 0000000..a9cdc25 --- /dev/null +++ b/manifests/service_limits.pp @@ -0,0 +1,50 @@ +# -- Define: systemd::service_limits +# Creates a custom config file and reloads systemd +define systemd::service_limits( + $ensure = file, + $path = '/etc/systemd/system', + $limits = undef, + $source = undef, + $restart_service = true +) { + include ::systemd + + if $limits { + validate_hash($limits) + $content = template('systemd/limits.erb') + } + else { + $content = undef + } + + if $limits and $source { + fail('You may not supply both limits and source parameters to systemd::service_limits') + } elsif $limits == undef and $source == undef { + fail('You must supply either the limits or source parameter to systemd::service_limits') + } + + file { "${path}/${title}.d/": + ensure => 'directory', + owner => 'root', + group => 'root', + } + -> + file { "${path}/${title}.d/limits.conf": + ensure => $ensure, + content => $content, + source => $source, + owner => 'root', + group => 'root', + mode => '0444', + notify => Exec['systemctl-daemon-reload'], + } + + if $restart_service { + exec { "systemctl restart ${title}": + path => $::path, + refreshonly => true, + subscribe => File["${path}/${title}.d/limits.conf"], + require => Exec['systemctl-daemon-reload'], + } + } +} -- cgit v1.2.3