From 72dbb3cb6b4404a73db15ee189a0b42df2758489 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Jeanneret?= Date: Tue, 2 Oct 2018 10:56:45 +0200 Subject: [PATCH] Load and persist modules from the host. This reusable ansible role will be used in tripleo-heat-templates in order to load known kernel modules such as ip_vs, iscsi and some other that are for now loaded from within the containers. Change-Id: Ic9076a0a1a8e1360495dcf0eb766118ec63dc362 --- .../tripleo-module-load-80f7fd8c8dd6a81e.yaml | 3 ++ roles/tripleo-module-load/defaults/main.yaml | 7 +++ roles/tripleo-module-load/tasks/main.yaml | 52 +++++++++++++++++++ .../templates/module-load.conf.j2 | 2 + 4 files changed, 64 insertions(+) create mode 100644 releasenotes/notes/tripleo-module-load-80f7fd8c8dd6a81e.yaml create mode 100644 roles/tripleo-module-load/defaults/main.yaml create mode 100644 roles/tripleo-module-load/tasks/main.yaml create mode 100644 roles/tripleo-module-load/templates/module-load.conf.j2 diff --git a/releasenotes/notes/tripleo-module-load-80f7fd8c8dd6a81e.yaml b/releasenotes/notes/tripleo-module-load-80f7fd8c8dd6a81e.yaml new file mode 100644 index 000000000..3fa0c1db4 --- /dev/null +++ b/releasenotes/notes/tripleo-module-load-80f7fd8c8dd6a81e.yaml @@ -0,0 +1,3 @@ +--- +features: + - Loads and persist kernel modules from the host directly. diff --git a/roles/tripleo-module-load/defaults/main.yaml b/roles/tripleo-module-load/defaults/main.yaml new file mode 100644 index 000000000..25f617838 --- /dev/null +++ b/roles/tripleo-module-load/defaults/main.yaml @@ -0,0 +1,7 @@ +--- +# Module name as a list of hashes: +# modules: +# - { name: foo, params: 'bar baz' } +# - { name: starwars } +# - { name: starwars, state: absent } +modules: [] diff --git a/roles/tripleo-module-load/tasks/main.yaml b/roles/tripleo-module-load/tasks/main.yaml new file mode 100644 index 000000000..286ec73ed --- /dev/null +++ b/roles/tripleo-module-load/tasks/main.yaml @@ -0,0 +1,52 @@ +--- +# Allow to get a clean way to load and persist kernel modules + +- name: Check whether /etc/modules-load.d exists + stat: + path: /etc/modules-load.d + register: modules_load_stat + +- name: "Load modules" + become: true + modprobe: + name: "{{ item.name }}" + params: "{{ item.params | default(omit) }}" + state: "{{ item.state | default('present') }}" + loop: "{{ modules }}" + loop_control: + label: "{{ item.name }}" + +- name: "Persist modules via modules-load.d" + become: true + template: + dest: "/etc/modules-load.d/{{ item.name }}.conf" + src: module-load.conf.j2 + loop: "{{ modules }}" + loop_control: + label: "{{ item.name }}" + when: + - modules_load_stat.stat.exists + - (item.state | default('present')) == 'present' + +- name: "Drop module persistence" + become: true + file: + path: "/etc/modules-load.d/{{ item.name }}.conf" + state: absent + loop: "{{ modules }}" + loop_control: + label: "{{ item.name }}" + when: + - modules_load_stat.stat.exists + - (item.state | default('present')) == 'absent' + +- name: "Set modules persistence via /etc/modules" + become: true + lineinfile: + dest: /etc/modules + line: "{{ item.name }} {{ item.params | default('') }}" + state: "{{ item.state | default('present') }}" + loop: "{{ modules }}" + loop_control: + label: "{{ item.name }}" + when: not modules_load_stat.stat.exists diff --git a/roles/tripleo-module-load/templates/module-load.conf.j2 b/roles/tripleo-module-load/templates/module-load.conf.j2 new file mode 100644 index 000000000..21808b95f --- /dev/null +++ b/roles/tripleo-module-load/templates/module-load.conf.j2 @@ -0,0 +1,2 @@ +# {{ ansible_managed }} +{{ item.name }} {{ item.params |default('') }}