blob: 1b98a50b13d53dbd5b85e333c57371362dd22cbc (
plain)
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
|
# Copyright (c) 2017 Intel Corporation
#
# 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.
---
- name: Set iommu_boot_params for Intel
set_fact:
iommu_boot_params: ' intel_iommu=on iommu=pt'
when: hostvars[inventory_hostname]['ansible_system_vendor'] == "Intel Corporation"
- name: Set iommu_boot_params for AMD
set_fact:
iommu_boot_params: ' amd_iommu=on iommu=pt'
when: hostvars[inventory_hostname]['ansible_system_vendor'] == "AuthenticAMD"
- name: Set facts for this role
set_fact:
hugepages_help_string: ' # added by hugepages role'
iommu_help_string: ', added by iommu role'
hugepages_params: " default_hugepagesz=1G hugepagesz=1G hugepages=8"
iommu_original_kernel_params: 'GRUB_CMDLINE_LINUX="\$GRUB_CMDLINE_LINUX{{ hugepages_params }}'
iommu_enabled_kernel_params: '{{ iommu_original_kernel_params }}{{ iommu_boot_params }}"'
iommu_enabled_kernel_params_with_help: '{{ iommu_original_kernel_params }}{{ iommu_boot_params }}"{{ hugepages_help_string }}{{ iommu_help_string }}'
- name: check if iommu is set by this role in /etc/default/grub
lineinfile:
path: /etc/default/grub
line: '{{ iommu_enabled_kernel_params_with_help }}'
#changed_when: no
check_mode: yes
register: is_mine_iommu_etc_grub
ignore_errors: True
- name: check if iommu is set by someone else
command: "grep -o 'iommu' /etc/default/grub"
register: is_iommu
ignore_errors: True
- fail:
msg: "Iommu already set by someone else"
when: is_mine_iommu_etc_grub.changed == false and is_iommu.stdout != ""
- name: 'Configure iommu in /etc/default/grub'
# and /boot/grub/grub.cfg(when: ansible_distribution == "Ubuntu")'
lineinfile:
path: /etc/default/grub
regexp: '({{ iommu_original_kernel_params }})"{{ hugepages_help_string }}'
line: '\1{{ iommu_boot_params }}"{{ hugepages_help_string }}{{ iommu_help_string }}'
backrefs: yes
when: is_mine_iommu_etc_grub.changed == true
- name: find boot grub.cfg
find:
paths: /boot
file_type: file
patterns: 'grub*.cfg'
recurse: yes
register: grub_files
- include: manual_modify_grub.yml
# only tested on Ubuntu, kernel line is probably different on other distros
with_items: "{{ grub_files.files }}"
when: ansible_distribution == "Ubuntu"
|