From 04c8ae9a578eb0702ba2811e2f579c770e096adf Mon Sep 17 00:00:00 2001 From: anon-software <8951449+anon-software@users.noreply.github.com> Date: Thu, 15 Aug 2024 10:32:22 -0700 Subject: [PATCH] More flexible cgroup settings (#352) * More flexible cgroup settings If there are already required cgroup boot parameters present but in a different order than specified, the script will add them again. It is better to test for the individual parameter in a loop and selectively add them as necessary. Signed-off-by: Marko Vukovic Signed-off-by: Marko Vukovic Signed-off-by: Marko Vukovic <8951449+anon-software@users.noreply.github.com> --- roles/raspberrypi/tasks/prereq/Archlinux.yml | 13 +++++++++---- roles/raspberrypi/tasks/prereq/CentOS.yml | 13 +++++++++---- roles/raspberrypi/tasks/prereq/Debian.yml | 13 +++++++++---- roles/raspberrypi/tasks/prereq/Raspbian.yml | 13 +++++++++---- roles/raspberrypi/tasks/prereq/Ubuntu.yml | 13 +++++++++---- 5 files changed, 45 insertions(+), 20 deletions(-) diff --git a/roles/raspberrypi/tasks/prereq/Archlinux.yml b/roles/raspberrypi/tasks/prereq/Archlinux.yml index c7075686..fe6dc6d9 100644 --- a/roles/raspberrypi/tasks/prereq/Archlinux.yml +++ b/roles/raspberrypi/tasks/prereq/Archlinux.yml @@ -1,8 +1,13 @@ --- - name: Enable cgroup via boot commandline if not already enabled - ansible.builtin.lineinfile: + ansible.builtin.replace: path: /boot/boot.txt - regexp: '^(setenv bootargs console=ttyS1,115200 console=tty0 root=PARTUUID=\${uuid} rw rootwait smsc95xx.macaddr="\${usbethaddr}")' - line: '\1 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory' - backrefs: true + regexp: '^(setenv bootargs console=ttyS1,115200 console=tty0 root=PARTUUID=\${uuid} rw rootwait smsc95xx.macaddr="\${usbethaddr}"(?!.*\b{{ cgroup_item }}\b).*)$' + replace: '\1 {{ cgroup_item }}' + with_items: + - "cgroup_enable=cpuset" + - "cgroup_memory=1" + - "cgroup_enable=memory" + loop_control: + loop_var: cgroup_item notify: Regenerate bootloader image diff --git a/roles/raspberrypi/tasks/prereq/CentOS.yml b/roles/raspberrypi/tasks/prereq/CentOS.yml index 30043d2d..cce433ec 100644 --- a/roles/raspberrypi/tasks/prereq/CentOS.yml +++ b/roles/raspberrypi/tasks/prereq/CentOS.yml @@ -1,8 +1,13 @@ --- - name: Enable cgroup via boot commandline if not already enabled - ansible.builtin.lineinfile: + ansible.builtin.replace: path: /boot/cmdline.txt - backrefs: true - regexp: '^((?!.*\bcgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory\b).*)$' - line: '\1 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory' + regexp: '^([\w](?!.*\b{{ cgroup_item }}\b).*)$' + replace: '\1 {{ cgroup_item }}' + with_items: + - "cgroup_enable=cpuset" + - "cgroup_memory=1" + - "cgroup_enable=memory" + loop_control: + loop_var: cgroup_item notify: Reboot Pi diff --git a/roles/raspberrypi/tasks/prereq/Debian.yml b/roles/raspberrypi/tasks/prereq/Debian.yml index aa003e3e..8dc260da 100644 --- a/roles/raspberrypi/tasks/prereq/Debian.yml +++ b/roles/raspberrypi/tasks/prereq/Debian.yml @@ -5,11 +5,16 @@ register: boot_firmware_cmdline_txt - name: Enable cgroup via boot commandline if not already enabled - ansible.builtin.lineinfile: + ansible.builtin.replace: path: "{{ (boot_firmware_cmdline_txt.stat.exists) | ternary('/boot/firmware/cmdline.txt', '/boot/cmdline.txt') }}" - backrefs: true - regexp: '^((?!.*\bcgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory\b).*)$' - line: '\1 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory' + regexp: '^([\w](?!.*\b{{ cgroup_item }}\b).*)$' + replace: '\1 {{ cgroup_item }}' + with_items: + - "cgroup_enable=cpuset" + - "cgroup_memory=1" + - "cgroup_enable=memory" + loop_control: + loop_var: cgroup_item notify: Reboot Pi - name: Gather the package facts diff --git a/roles/raspberrypi/tasks/prereq/Raspbian.yml b/roles/raspberrypi/tasks/prereq/Raspbian.yml index 1ce8d5bf..cdcb4163 100644 --- a/roles/raspberrypi/tasks/prereq/Raspbian.yml +++ b/roles/raspberrypi/tasks/prereq/Raspbian.yml @@ -1,10 +1,15 @@ --- - name: Enable cgroup via boot commandline if not already enabled - ansible.builtin.lineinfile: + ansible.builtin.replace: path: /boot/cmdline.txt - backrefs: true - regexp: '^((?!.*\bcgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory\b).*)$' - line: '\1 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory' + regexp: '^([\w](?!.*\b{{ cgroup_item }}\b).*)$' + replace: '\1 {{ cgroup_item }}' + with_items: + - "cgroup_enable=cpuset" + - "cgroup_memory=1" + - "cgroup_enable=memory" + loop_control: + loop_var: cgroup_item notify: Reboot Pi - name: Gather the package facts diff --git a/roles/raspberrypi/tasks/prereq/Ubuntu.yml b/roles/raspberrypi/tasks/prereq/Ubuntu.yml index 71cc24b5..4210ae3a 100644 --- a/roles/raspberrypi/tasks/prereq/Ubuntu.yml +++ b/roles/raspberrypi/tasks/prereq/Ubuntu.yml @@ -1,11 +1,16 @@ --- - name: Enable cgroup via boot commandline if not already enabled when: lookup('fileglob', '/boot/firmware/cmdline.txt', errors='warn') | length > 0 - ansible.builtin.lineinfile: + ansible.builtin.replace: path: /boot/firmware/cmdline.txt - backrefs: true - regexp: '^((?!.*\bcgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory\b).*)$' - line: '\1 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory' + regexp: '^([\w](?!.*\b{{ cgroup_item }}\b).*)$' + replace: '\1 {{ cgroup_item }}' + with_items: + - "cgroup_enable=cpuset" + - "cgroup_memory=1" + - "cgroup_enable=memory" + loop_control: + loop_var: cgroup_item notify: Reboot Pi - name: Install Ubuntu Raspi Extra Packages