Bugfix in role enable_hugepages_on_boot 15/47615/10
authorJan Malanik <janx.malanik@intel.com>
Tue, 21 Nov 2017 19:05:07 +0000 (11:05 -0800)
committerRoss Brattain <ross.b.brattain@intel.com>
Fri, 22 Dec 2017 10:43:44 +0000 (10:43 +0000)
Make role idempotent.
Current regex doesn't match for:
linux   /boot/vmlinuz-4.10.0-30-generic root=/dev/nvme0n1p1 ro vga=788 text

Change-Id: If5eb20fce4ddc35bb109c00eb7565853b3763950
Signed-off-by: Jan Malanik <janx.malanik@intel.com>
Signed-off-by: Malanik Jan <janx.malanik@intel.com>
ansible/roles/enable_hugepages_on_boot/tasks/main.yml
ansible/roles/enable_hugepages_on_boot/tasks/manual_modify_grub.yml
ansible/roles/enable_hugepages_on_boot/vars/main.yml

index 29432d2..75526eb 100755 (executable)
     msg: "Hugepages already set by someone else"
   when: is_mine_huge.stdout == "" and is_huge.stdout != ""
 
-- name: use 16 for auto num_hugepages and 1G size
-  set_fact:
-    num_hugepages: 8
-  when: num_hugepages|default("auto") == "auto"
+- name: configure hugepages as idempotent block
+  block:
+    - name: use 8 for auto num_hugepages and 1G size
+      set_fact:
+        num_hugepages: 8
+      when: num_hugepages|default("auto") == "auto"
 
-- name: set hugepages in grub
-  lineinfile:
-    dest: /etc/default/grub
-    regexp: '{{ hugepage_param_regex }}'
-    line: '{{ hugepage_param }}'
-    state: present
+    - name: set hugepages in grub
+      lineinfile:
+        dest: /etc/default/grub
+        regexp: '{{ hugepage_param_regex }}'
+        line: '{{ hugepage_param }}'
+        state: present
 
-- name: create hugetables mount
-  file:
-    path: "{{ hugetable_mount }}"
-    state: directory
+    - name: create hugetables mount
+      file:
+        path: "{{ hugetable_mount }}"
+        state: directory
 
-- name: mount hugetlbfs
-  mount:
-    name: "{{ hugetable_mount }}"
-    src: nodev
-    fstype: hugetlbfs
-    state: present
+    - name: mount hugetlbfs
+      mount:
+        name: "{{ hugetable_mount }}"
+        src: nodev
+        fstype: hugetlbfs
+        state: present
 
-- service:
-    name: procps
-    enabled: yes
+    - service:
+        name: procps
+        enabled: yes
 
-- include: manual_modify_grub.yml
-  # only tested on Ubuntu, kernel line is probably different on other distros
-  when: ansible_distribution == "Ubuntu"
+    - include: manual_modify_grub.yml
+      # only tested on Ubuntu, kernel line is probably different on other distros
+      when: ansible_distribution == "Ubuntu"
+  when: is_mine_huge.stdout == ""
index cac10e8..6fa0c1d 100644 (file)
     recurse: yes
   register: grub_files
 
+- name: check if hugepages are already enabled
+  command: "grep -o 'default_hugepagesz=' {{ item.path }}"
+  register: hugepage_enabled
+  ignore_errors: True
+  with_items: "{{ grub_files.files }}"
 
-- name: added hugepages to grub manually because we can't run update-grub in chroot
+- name: add hugepages to grub manually because we can't run update-grub in chroot
   replace:
     dest: "{{ item.path }}"
-    # console= should end the line
-    regexp: '(linux\s+/boot/vmlinuz.*console=\S+$)'
-    # default_hugepagesz=1G hugepagesz=1G hugepages=8
+    regexp: '(linux\s+/boot/vmlinuz.*$)'
     replace: '\1 default_hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepages={{ num_hugepages }}'
   with_items: "{{ grub_files.files }}"
-
-
-
-
+  # we suppose consistent /boot/grub/grub.cfg files
+  when:  hugepage_enabled['results'][0].stdout == ""
index acdf025..6fec347 100644 (file)
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 ---
-hugepage_param_regex: '^GRUB_CMDLINE_LINUX="\$GRUB_CMDLINE_LINUX.*# added by hugepages role'
+hugepage_param_regex: '^GRUB_CMDLINE_LINUX="\$GRUB_CMDLINE_LINUX.*"  # added by hugepages role'
 hugepage_param: 'GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX default_hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepagesz={{ huge_pagesize_short[huge_pagesize_mb] }} hugepages={{ num_hugepages }}"  # added by hugepages role'
 
 update_grub: