--- - name: Find kernel cmdline file ansible.builtin.stat: path: "{{ item }}" loop: "{{ cgroups_cmdline_candidates }}" register: cmdline_stats - name: Select kernel cmdline path ansible.builtin.set_fact: cgroups_cmdline_path: "{{ (cmdline_stats.results | selectattr('stat.exists') | map(attribute='stat.path') | list | first) | default('') }}" - name: Fail when kernel cmdline file is missing ansible.builtin.fail: msg: "No kernel cmdline file found. Checked: {{ cgroups_cmdline_candidates | join(', ') }}" when: cgroups_cmdline_path | length == 0 - name: Read kernel cmdline ansible.builtin.slurp: path: "{{ cgroups_cmdline_path }}" register: cmdline_raw - name: Parse kernel cmdline line ansible.builtin.set_fact: cgroups_cmdline_current: "{{ (cmdline_raw.content | b64decode).splitlines()[0] | default('') }}" - name: Calculate missing cgroup params ansible.builtin.set_fact: cgroups_missing_params: "{{ cgroups_required_params | reject('in', cgroups_cmdline_current) | list }}" - name: Update kernel cmdline when params are missing ansible.builtin.copy: dest: "{{ cgroups_cmdline_path }}" content: >- {{ cgroups_cmdline_current ~ (' ' ~ (cgroups_missing_params | join(' ')) if (cgroups_missing_params | length) > 0 else '') ~ '\n' }} mode: "0644" register: cmdline_update when: cgroups_missing_params | length > 0 - name: Reboot to apply cgroup settings ansible.builtin.reboot: msg: "Rebooting to apply cgroup kernel parameters" pre_reboot_delay: 3 reboot_timeout: 600 when: cmdline_update is changed and cgroups_reboot | bool - name: Verify cgroup kernel parameters after reboot ansible.builtin.command: "cat /proc/cmdline" register: proc_cmdline changed_when: false - name: Fail when cgroup params are missing (reboot required) ansible.builtin.fail: msg: "Missing cgroup params in /proc/cmdline: {{ cgroups_required_params | reject('in', proc_cmdline.stdout) | list }}. Reboot required." when: (cgroups_required_params | reject('in', proc_cmdline.stdout) | list) | length > 0