--- - name: Read grub defaults ansible.builtin.slurp: src: /mnt/etc/default/grub register: configuration_grub_slurp - name: Build grub command lines with LUKS args vars: grub_content: "{{ configuration_grub_slurp.content | b64decode }}" grub_cmdline_linux: >- {{ grub_content | regex_findall('^GRUB_CMDLINE_LINUX=\"(.*)\"', multiline=True) | default([]) | first | default('') }} grub_cmdline_default: >- {{ grub_content | regex_findall('^GRUB_CMDLINE_LINUX_DEFAULT=\"(.*)\"', multiline=True) | default([]) | first | default('') }} grub_cmdline_linux_list: >- {{ grub_cmdline_linux.split() if grub_cmdline_linux | length > 0 else [] }} grub_cmdline_default_list: >- {{ grub_cmdline_default.split() if grub_cmdline_default | length > 0 else [] }} luks_kernel_args_list: "{{ configuration_luks_kernel_args.split() }}" grub_cmdline_linux_new: >- {{ ( ( grub_cmdline_linux_list | reject('match', '^rd\\.luks\\.(name|options|key)=' ~ configuration_luks_uuid ~ '=') | list ) + luks_kernel_args_list ) | unique | join(' ') }} grub_cmdline_default_new: >- {{ ( ( grub_cmdline_default_list | reject('match', '^rd\\.luks\\.(name|options|key)=' ~ configuration_luks_uuid ~ '=') | list ) + luks_kernel_args_list ) | unique | join(' ') }} ansible.builtin.set_fact: configuration_grub_content: "{{ grub_content }}" configuration_grub_cmdline_linux: "{{ grub_cmdline_linux }}" configuration_grub_cmdline_default: "{{ grub_cmdline_default }}" configuration_grub_cmdline_linux_new: "{{ grub_cmdline_linux_new }}" configuration_grub_cmdline_default_new: "{{ grub_cmdline_default_new }}" - name: Update GRUB_CMDLINE_LINUX_DEFAULT for LUKS ansible.builtin.lineinfile: path: /mnt/etc/default/grub regexp: "^GRUB_CMDLINE_LINUX_DEFAULT=" line: 'GRUB_CMDLINE_LINUX_DEFAULT="{{ configuration_grub_cmdline_default_new }}"'