From 3c9a77ce3d08af3e52a5b8ed8e33a965d35600e8 Mon Sep 17 00:00:00 2001 From: Sergei Petrosian <30409084+spetrosi@users.noreply.github.com> Date: Tue, 12 Mar 2024 15:23:28 +0100 Subject: [PATCH] fix: Add /etc/default/grub if missing (#93) * Generate default grub with template regardless of ostree --- tasks/main.yml | 25 +++++++++++++++++++ templates/etc_default_grub.j2 | 13 ++++++++++ .../linux-system-roles.bootloader/templates | 1 + 3 files changed, 39 insertions(+) create mode 100644 templates/etc_default_grub.j2 create mode 120000 tests/roles/linux-system-roles.bootloader/templates diff --git a/tasks/main.yml b/tasks/main.yml index bc27b74..f055f75 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -10,6 +10,31 @@ use: "{{ (__bootloader_is_ostree | d(false)) | ternary('ansible.posix.rhel_rpm_ostree', omit) }}" +- name: Get stat of {{ __bootloader_default_grub }} + stat: + path: "{{ __bootloader_default_grub }}" + register: __bootloader_default_grub_stat + +- name: If missing, add {{ __bootloader_default_grub }} + when: not __bootloader_default_grub_stat.stat.exists + block: + - name: Get bootloader args of the default kernel + shell: >- + set -euo pipefail; + grubby --info=DEFAULT | grep -oP 'args=\K(.*)' + register: __bootloader_default_args + changed_when: false + + - name: Generate {{ __bootloader_default_grub }} + vars: + grub_cmdline_linux: "{{ __bootloader_default_args.stdout }}" + template: + src: etc_default_grub.j2 + dest: "{{ __bootloader_default_grub }}" + owner: root + group: root + mode: 0644 + - name: Determine platform type stat: path: /sys/firmware/efi diff --git a/templates/etc_default_grub.j2 b/templates/etc_default_grub.j2 new file mode 100644 index 0000000..f6c940d --- /dev/null +++ b/templates/etc_default_grub.j2 @@ -0,0 +1,13 @@ +{{ ansible_managed | comment }} +{{ "system_role:bootloader" | comment(prefix="", postfix="") }} +GRUB_TIMEOUT={{ bootloader_timeout }} +GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" +GRUB_DEFAULT=saved +GRUB_DISABLE_SUBMENU=true +GRUB_TERMINAL_OUTPUT="console" +GRUB_CMDLINE_LINUX={{ grub_cmdline_linux }} +GRUB_DISABLE_RECOVERY="true" +{% if not (ansible_facts['os_family'] == 'RedHat' and +ansible_facts['distribution_version'] is version('7', '>=')) %} +GRUB_ENABLE_BLSCFG=true +{% endif %} diff --git a/tests/roles/linux-system-roles.bootloader/templates b/tests/roles/linux-system-roles.bootloader/templates new file mode 120000 index 0000000..64f6ba6 --- /dev/null +++ b/tests/roles/linux-system-roles.bootloader/templates @@ -0,0 +1 @@ +../../../templates/ \ No newline at end of file