Defined Type: kmod::load

Defined in:
manifests/load.pp

Overview

Definition: kmod::load

Manage a kernel module in /etc/modules.

Parameters:

  • ensure: present/absent;

  • file: optionally, set the file where the stanza is written. Not

    used for systems running systemd.
    

Example usage:

kmod::load { 'sha256': }

Parameters:

  • ensure (Any) (defaults to: present)
  • file (Any) (defaults to: '/etc/modules')


15
16
17
18
19
20
21
22
23
24
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'manifests/load.pp', line 15

define kmod::load(
  $ensure=present,
  $file='/etc/modules',
) {

  case $ensure {
    'present': {
      case $::osfamily {
        'Debian': {
          $changes = "clear '${name}'"
        }
        'Suse': {
          $changes = "set MODULES_LOADED_ON_BOOT/value[.='${name}'] '${name}'"
        }
        default: { }
      }

      exec { "modprobe ${name}":
        path   => '/bin:/sbin:/usr/bin:/usr/sbin',
        unless => "egrep -q '^${name} ' /proc/modules",
      }
    }

    'absent': {
      case $::osfamily {
        'Debian': {
          $changes = "rm '${name}'"
        }
        'Suse': {
          $changes = "rm MODULES_LOADED_ON_BOOT/value[.='${name}']"
        }
        default: { }
      }

      exec { "modprobe -r ${name}":
        path   => '/bin:/sbin:/usr/bin:/usr/sbin',
        onlyif => "egrep -q '^${name} ' /proc/modules",
      }
    }

    default: { fail "${module_name}: unknown ensure value ${ensure}" }
  }

  if $facts['service_provider'] == 'systemd' {
    file { "/etc/modules-load.d/${name}.conf":
      ensure  => $ensure,
      mode    => '0644',
      content => "# This file is managed by the puppet kmod module.\n${name}\n",
    }
  } else {
    case $::osfamily {
      'Debian': {
        augeas {"Manage ${name} in ${file}":
          incl    => $file,
          lens    => 'Modules.lns',
          changes => $changes,
        }
      }
      'RedHat': {
        file { "/etc/sysconfig/modules/${name}.modules":
          ensure  => $ensure,
          mode    => '0755',
          content => template('kmod/redhat.modprobe.erb'),
        }
      }
      'Suse': {
        $kernelfile = $file ? {
          '/etc/modules' => '/etc/sysconfig/kernel',
          default        => $file,
        }
        augeas { "sysconfig_kernel_MODULES_LOADED_ON_BOOT_${name}":
          lens    => 'Shellvars_list.lns',
          incl    => $kernelfile,
          changes => $changes,
        }
      }
      default: {
        fail "${module_name}: Unknown OS family ${::osfamily}"
      }
    }
  }
}