summaryrefslogtreecommitdiff
path: root/puppet/modules/systemd/manifests
diff options
context:
space:
mode:
Diffstat (limited to 'puppet/modules/systemd/manifests')
-rw-r--r--puppet/modules/systemd/manifests/init.pp8
-rw-r--r--puppet/modules/systemd/manifests/service_limits.pp50
-rw-r--r--puppet/modules/systemd/manifests/tmpfile.pp20
-rw-r--r--puppet/modules/systemd/manifests/unit_file.pp22
4 files changed, 99 insertions, 1 deletions
diff --git a/puppet/modules/systemd/manifests/init.pp b/puppet/modules/systemd/manifests/init.pp
index 5e6ad792..e669f093 100644
--- a/puppet/modules/systemd/manifests/init.pp
+++ b/puppet/modules/systemd/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/puppet/modules/systemd/manifests/service_limits.pp b/puppet/modules/systemd/manifests/service_limits.pp
new file mode 100644
index 00000000..a9cdc25a
--- /dev/null
+++ b/puppet/modules/systemd/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'],
+ }
+ }
+}
diff --git a/puppet/modules/systemd/manifests/tmpfile.pp b/puppet/modules/systemd/manifests/tmpfile.pp
new file mode 100644
index 00000000..c4d1a05f
--- /dev/null
+++ b/puppet/modules/systemd/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/puppet/modules/systemd/manifests/unit_file.pp b/puppet/modules/systemd/manifests/unit_file.pp
new file mode 100644
index 00000000..94bc845b
--- /dev/null
+++ b/puppet/modules/systemd/manifests/unit_file.pp
@@ -0,0 +1,22 @@
+# -- 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,
+ $target = undef,
+) {
+ include ::systemd
+
+ file { "${path}/${title}":
+ ensure => $ensure,
+ content => $content,
+ source => $source,
+ target => $target,
+ owner => 'root',
+ group => 'root',
+ mode => '0444',
+ notify => Exec['systemctl-daemon-reload'],
+ }
+}