Write kernel modules via template

Using lineinfile for writing kernel modules is tedious and usually
takes 10-12 seconds each time. This method takes about 1 second.

Change-Id: Ide4bfb87f375bc80f9dce2208717b6050004a942
This commit is contained in:
Major Hayden 2017-07-28 08:07:46 -05:00
parent e76fac8448
commit b94a00ef87
No known key found for this signature in database
GPG Key ID: 737051E0C1011FB1
2 changed files with 27 additions and 26 deletions

View File

@ -13,24 +13,6 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
- name: "Ensure kernel module(s)"
modprobe:
name: "{{ item }}"
with_items: "{{ openstack_host_kernel_modules }}"
when:
- openstack_host_kernel_modules | length > 0
- item != ''
- name: "Ensure kernel module(s) loaded at boot"
lineinfile:
dest: "{{ openstask_host_module_file }}"
line: "{{ item }}"
create: yes
with_items: "{{ openstack_host_kernel_modules }}"
when:
- openstack_host_kernel_modules | length > 0
- item != ''
- name: check how kernel modules are implemented (statically builtin, dynamic, not set) - name: check how kernel modules are implemented (statically builtin, dynamic, not set)
slurp: slurp:
src: "/boot/config-{{ ansible_kernel }}" src: "/boot/config-{{ ansible_kernel }}"
@ -56,6 +38,14 @@
- (modules.content | b64decode).find(item.pattern + '=y') == -1 - (modules.content | b64decode).find(item.pattern + '=y') == -1
- (modules.content | b64decode).find(item.pattern + '=m') == -1 - (modules.content | b64decode).find(item.pattern + '=m') == -1
- name: "Ensure kernel module(s)"
modprobe:
name: "{{ item }}"
with_items: "{{ openstack_host_kernel_modules }}"
when:
- openstack_host_kernel_modules | length > 0
- item != ''
- name: "Ensure dynamic specific kernel module(s) are loaded" - name: "Ensure dynamic specific kernel module(s) are loaded"
modprobe: modprobe:
name: "{{ item.name }}" name: "{{ item.name }}"
@ -65,12 +55,7 @@
- inventory_hostname in groups[item.group] - inventory_hostname in groups[item.group]
- (modules.content | b64decode).find(item.pattern + '=m') != -1 - (modules.content | b64decode).find(item.pattern + '=m') != -1
- name: "Ensure dynamic specific kernel module(s) loaded at boot" - name: Write list of modules to load at boot
lineinfile: template:
src: modprobe.conf.j2
dest: "{{ openstask_host_module_file }}" dest: "{{ openstask_host_module_file }}"
line: "{{ item.name }}"
with_items: "{{ openstack_host_specific_kernel_modules }}"
when:
- groups[item.group] is defined
- inventory_hostname in groups[item.group]
- (modules.content | b64decode).find(item.pattern + '=m') != -1

View File

@ -0,0 +1,16 @@
# {{ ansible_managed }}
# Modules from the openstack-ansible-openstack_hosts role
{% for module in openstack_host_kernel_modules %}
{{ module }}
{% endfor %}
# Host-specific dynamic modules
{%
for module in openstack_host_specific_kernel_modules if (
groups[module.group] is defined and
inventory_hostname in module.group and
item.pattern + '=m' in (modules.content | b64decode)
)
%}
{{ module }}
{% endfor %}