Defined Type: systemd::udev::rule

Defined in:
manifests/udev/rule.pp

Overview

Adds a custom udev rule

Parameters:

  • name (Pattern['^.+\.rules$'])

    The name of the udev rules to create

  • ensure (Enum['present', 'absent', 'file']) (defaults to: 'file')

    Whether to drop a file or remove it

  • path (Stdlib::Absolutepath) (defaults to: '/etc/udev/rules.d')

    The path to the main systemd settings directory

  • selinux_ignore_defaults (Boolean) (defaults to: false)

    If Puppet should ignore the default SELinux labels.

  • notify_services (Variant[Array[String[1]], String[1]]) (defaults to: [])

    List of services to notify when this rule is updated

  • rules (Array) (defaults to: [])

    The literal udev rules you want to deploy

See Also:

  • udev(7)


25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'manifests/udev/rule.pp', line 25

define systemd::udev::rule (
  Array                             $rules                   = [],
  Enum['present', 'absent', 'file'] $ensure                  = 'file',
  Stdlib::Absolutepath              $path                    = '/etc/udev/rules.d',
  Variant[Array[String[1]], String[1]] $notify_services      = [],
  Boolean                           $selinux_ignore_defaults = false,
) {
  include systemd

  $filename = assert_type(Pattern['^.+\.rules$'], $name) |$expected, $actual| {
    fail("The \$name should match \'${expected}\', you passed \'${actual}\'")
  }
  if $ensure in ['file', 'present'] and empty($rules) {
    fail("systemd::udev::rule - ${name}: param rules is empty, you need to pass rules")
  }

  file { join([$path, $name], '/'):
    ensure                  => $ensure,
    owner                   => 'root',
    group                   => 'root',
    mode                    => '0444',
    notify                  => $notify_services,
    selinux_ignore_defaults => $selinux_ignore_defaults,
    content                 => epp("${module_name}/udev_rule.epp", { 'rules' => $rules }),
  }
}