aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOr Idgar <oidgar@redhat.com>2017-06-15 13:41:02 +0000
committerOr Idgar <oidgar@redhat.com>2017-07-03 12:14:23 +0300
commit0566aaef1be00e9dbd7b3fad4028b9c5eb7bf24b (patch)
treeb602b46b70f8de3fe1c21504b5f3a81df81d670f
parentc6de6cf78b222b89088ae2b572953be91760cba2 (diff)
Ignore failures when loading nf_conntrack_proto_sctp kernel module
Ignore failures if nf_conntrack_proto_sctp module failed to load. Since RHEL 7.4, nf_conntrack_proto_sctp module is compiled into the kernel instead of as a module as the sctp support. TripleO will still try to load the module to support RHEL 7.3, but in the future will remove the module management and rely on the kernel provided in newer versions of RHEL. Co-Authored-By: Or Idgar <oidgar@redhat.com> Co-Authored-By: Alex Schultz <aschultz@redhat.com> Co-Authored-By: Emilien Macchi <emilien@redhat.com> Change-Id: I8f1c841a7c0f3b1247aba2b959b6dfbe43d8cd79 Closes-Bug: 1695885 (cherry picked from commit 76eb1bbd4f977e16c97516500f050f8b49e7399d)
-rw-r--r--manifests/profile/base/kernel.pp28
-rw-r--r--releasenotes/notes/nf_conntrack_proto_sctp-a64300a3fc7b4e55.yaml9
-rw-r--r--spec/classes/tripleo_profile_base_kernel_spec.rb59
3 files changed, 91 insertions, 5 deletions
diff --git a/manifests/profile/base/kernel.pp b/manifests/profile/base/kernel.pp
index df13a98..48caf37 100644
--- a/manifests/profile/base/kernel.pp
+++ b/manifests/profile/base/kernel.pp
@@ -17,14 +17,32 @@
#
# Load and configure Kernel modules.
#
-class tripleo::profile::base::kernel {
+# === Parameters
+#
+# [*module_list*]
+# (Optional) List of kernel modules to load.
+# Defaults to hiera('kernel_modules')
+#
+# [*sysctl_settings*]
+# (Optional) List of sysctl settings to load.
+# Defaults to hiera('sysctl_settings')
+#
+class tripleo::profile::base::kernel (
+ $module_list = hiera('kernel_modules', undef),
+ $sysctl_settings = hiera('sysctl_settings', undef),
+) {
- if hiera('kernel_modules', undef) {
- create_resources(kmod::load, hiera('kernel_modules'), { })
+ if $module_list {
+ create_resources(kmod::load, $module_list, { })
}
- if hiera('sysctl_settings', undef) {
- create_resources(sysctl::value, hiera('sysctl_settings'), { })
+ if $sysctl_settings {
+ create_resources(sysctl::value, $sysctl_settings, { })
}
Exec <| tag == 'kmod::load' |> -> Sysctl <| |>
+ # RHEL 7.4+ workaround where this functionality is built into the
+ # kernel instead of being built as a module.
+ # That way, we can support both 7.3 and 7.4 RHEL versions.
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1387537
+ Exec <| title == 'modprobe nf_conntrack_proto_sctp' |> { returns => [0,1] }
}
diff --git a/releasenotes/notes/nf_conntrack_proto_sctp-a64300a3fc7b4e55.yaml b/releasenotes/notes/nf_conntrack_proto_sctp-a64300a3fc7b4e55.yaml
new file mode 100644
index 0000000..9aad5ee
--- /dev/null
+++ b/releasenotes/notes/nf_conntrack_proto_sctp-a64300a3fc7b4e55.yaml
@@ -0,0 +1,9 @@
+---
+issues:
+ - |
+ Ignore failures if nf_conntrack_proto_sctp module failed to load.
+ Since RHEL 7.4, nf_conntrack_proto_sctp module is compiled into the
+ kernel instead of as a module as the sctp support.
+ TripleO will still try to load the module to support RHEL 7.3, but
+ in the future will remove the module management and rely on the kernel
+ provided in newer versions of RHEL.
diff --git a/spec/classes/tripleo_profile_base_kernel_spec.rb b/spec/classes/tripleo_profile_base_kernel_spec.rb
new file mode 100644
index 0000000..4c2aab2
--- /dev/null
+++ b/spec/classes/tripleo_profile_base_kernel_spec.rb
@@ -0,0 +1,59 @@
+#
+# Copyright (C) 2017 Red Hat, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+#
+
+require 'spec_helper'
+
+describe 'tripleo::profile::base::kernel' do
+
+ shared_examples_for 'tripleo::profile::base::kernel' do
+ context 'with kernel modules' do
+ let :params do
+ {
+ :module_list => {
+ 'nf_conntrack' => {},
+ }
+ }
+ end
+
+ it 'should load kernel module' do
+ is_expected.to contain_kmod__load('nf_conntrack')
+ end
+ end
+ context 'with sysctl settings' do
+ let :params do
+ {
+ :sysctl_settings => {
+ 'net.ipv4.tcp_keepalive_intvl' => { 'value' => '1'},
+ }
+ }
+ end
+
+ it 'should load kernel module' do
+ is_expected.to contain_sysctl__value('net.ipv4.tcp_keepalive_intvl')
+ end
+ end
+ end
+
+ on_supported_os.each do |os, facts|
+ context "on #{os}" do
+ let(:facts) {
+ facts
+ }
+
+ it_behaves_like 'tripleo::profile::base::kernel'
+ end
+ end
+end