From c25ee385fbcd3122855795d128a951c9c3458e6e Mon Sep 17 00:00:00 2001 From: Thomas Bellman <bellman@lysator.liu.se> Date: Tue, 19 Dec 2017 16:29:18 +0100 Subject: [PATCH] Add support for Grub 2 in kernel_option. This adds a new helper for bootloader::kernel_option handling the Grub 2 case. This also only supports removing options, though, not setting them. --- manifests/grub2/kernel_option.pp | 45 ++++++++++++++++++++++++++++++++ manifests/kernel_option.pp | 6 +++++ 2 files changed, 51 insertions(+) create mode 100644 manifests/grub2/kernel_option.pp diff --git a/manifests/grub2/kernel_option.pp b/manifests/grub2/kernel_option.pp new file mode 100644 index 0000000..d0b13fd --- /dev/null +++ b/manifests/grub2/kernel_option.pp @@ -0,0 +1,45 @@ +# Copyright © 2017 Thomas Bellman, Linköping, Sweden +# Licensed under the GNU LGPL v3+; see the README file for more information. + + +/* + * Internal helper for the bootloader::kernel_option definition. + */ +define bootloader::grub2::kernel_option($ensure, $value) +{ + include bootloader::grub2::rebuild_grub_cfg + + $prefix = '^(GRUB_CMDLINE_LINUX="?(|.*\s))' + $suffix = '((|\s.*)("?))\s*$' + $qname = regexp_quote($name) + + if ($ensure == 'absent') + { + regexp_replace_lines { + "bootloader::grub2::kernel_option::${name}": + file => '/etc/default/grub', + pattern => "${prefix}${qname}(=[^ \t\"]*)?${suffix}", + replacement => '\1\4', + notify => Class['bootloader::grub2::rebuild_grub_cfg']; + } + } + elsif ($ensure != 'present') + { + fail("Bootloader::Grub2::Kernel_Option[${title}]: ", + "Bad ensure parameter, ${ensure}") + } + elsif ($value == true or $value == false) + { + # Detecting if the option is already present is not easily done + # using regexps... + fail("Bootloader::Grub2::Kernel_option[${title}]: ", + "Setting a kernel option is not yet implemented.") + } + else + { + # Detecting if the option is already present is not easily done + # using regexps... + fail("Bootloader::Grub2::Kernel_option[${title}]: ", + "Setting a kernel option is not yet implemented.") + } +} diff --git a/manifests/kernel_option.pp b/manifests/kernel_option.pp index 5c896fb..6bb1464 100644 --- a/manifests/kernel_option.pp +++ b/manifests/kernel_option.pp @@ -34,6 +34,12 @@ define bootloader::kernel_option($ensure='present', $value=undef) name => $name, ensure => $ensure, value => $value; } } + 'grub2': { + bootloader::grub2::kernel_option { + $title: + name => $name, ensure => $ensure, value => $value; + } + } default: { fail("Bootloader::Kernel_option[${title}]: ", "Unsupported bootloader, ${bootloader}") -- GitLab