1 2 3 4 5 6 7 8 9 10 11 12 13 14 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
|
#
# == Definition: kmod::load
#
# Manage a kernel module in /etc/modules.
#
# Parameters:
# - *ensure*: present/absent;
# - *file*: optionally, set the file where the stanza is written.
#
# Example usage:
#
# kmod::load { 'sha256': }
#
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}" }
}
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}"
}
}
}
|