--- /dev/null
+# Creates a systemd tmpfile
+#
+# @api public
+#
+# @see systemd-tmpfiles(8)
+#
+# @attr name [String]
+# The name of the tmpfile to create
+#
+# * May not contain ``/``
+#
+# @param $ensure
+# Whether to drop a file or remove it
+#
+# @param path
+# The path to the main systemd tmpfiles directory
+#
+# @param content
+# The literal content to write to the file
+#
+# * Mutually exclusive with ``$source``
+#
+# @param source
+# A ``File`` resource compatible ``source``
+#
+# * Mutually exclusive with ``$limits``
+#
+define systemd::tmpfile(
+ Enum['present', 'absent', 'file'] $ensure = 'file',
+ Stdlib::Absolutepath $path = '/etc/tmpfiles.d',
+ Optional[String] $content = undef,
+ Optional[String] $source = undef,
+) {
+ include systemd::tmpfiles
+
+ if $name =~ Pattern['/'] {
+ fail('$name may not contain a forward slash "(/)"')
+ }
+
+ $_tmp_file_ensure = $ensure ? {
+ 'present' => 'file',
+ default => $ensure,
+ }
+
+ file { "${path}/${name}":
+ ensure => $_tmp_file_ensure,
+ content => $content,
+ source => $source,
+ owner => 'root',
+ group => 'root',
+ mode => '0444',
+ notify => Class['systemd::tmpfiles'],
+ }
+}