From 0b434dad5f22e84b41656d9a891863b840dcb477 Mon Sep 17 00:00:00 2001 From: James Osborne Date: Thu, 18 Apr 2024 16:43:48 +0100 Subject: [PATCH 1/3] Cloud-init images use alternate grub config Ubuntu images with cloudinit use a different base/source for its grub configuration than CentOS - /etc/default/grub.d/50-cloudimg-settings.cfg not /etc/default/grub. We look for the cloud-init config file and use that, otherwise default to /etc/default/grub file. --- roles/grubcmdline/defaults/main.yml | 3 +++ roles/grubcmdline/tasks/main.yml | 17 +++++++++++++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/roles/grubcmdline/defaults/main.yml b/roles/grubcmdline/defaults/main.yml index d31d836..f5b581b 100644 --- a/roles/grubcmdline/defaults/main.yml +++ b/roles/grubcmdline/defaults/main.yml @@ -9,3 +9,6 @@ kernel_restart_handler: reboot # noqa var-naming[no-role-prefix] # optionally skip backing up the config file. Can cause issues on some # filesystems due to filenames containing illegal characters backup_grub_config_file: true # noqa var-naming[no-role-prefix] + +default_grub_conf: "/etc/default/grub" +cloudinit_grub_conf: "/etc/default/grub.d/50-cloudimg-settings.cfg" diff --git a/roles/grubcmdline/tasks/main.yml b/roles/grubcmdline/tasks/main.yml index e191d83..8e78c2d 100644 --- a/roles/grubcmdline/tasks/main.yml +++ b/roles/grubcmdline/tasks/main.yml @@ -15,9 +15,18 @@ changed_when: old_cmdline != kernel_cmdline | select() | sort | list notify: "{{ kernel_restart_handler }}" -- name: Slurp /etc/default/grub +- name: Look for cloud-init grub file + ansible.builtin.stat: + path: "{{ cloudinit_grub_conf }}" + register: cloudinit_result + +- name: Set fact with the grub conf file path + ansible.builtin.set_fact: + grub_conf_file: cloudinit_result.stat.exists | ternary(cloudinit_grub_conf, default_grub_conf) + +- name: Slurp grub config file ansible.builtin.slurp: - path: /etc/default/grub + path: "{{ grub_conf_file }}" register: grub_result become: true @@ -47,9 +56,9 @@ ansible.builtin.debug: var: grub_cmdline_linux_new -- name: Set GRUB_CMDLINE_LINUX_DEFAULT in /etc/default/grub +- name: Set GRUB_CMDLINE_LINUX_DEFAULT in the appropriate grub conf ansible.builtin.lineinfile: - path: /etc/default/grub + path: "{{ grub_conf_file }}" regexp: ^GRUB_CMDLINE_LINUX_DEFAULT line: GRUB_CMDLINE_LINUX_DEFAULT="{{ grub_cmdline_linux_new | join(' ') }}" backup: "{{ backup_grub_config_file }}" From aa01c4a6c0e8f1385dae29ce47f1751b30225c69 Mon Sep 17 00:00:00 2001 From: James Osborne Date: Fri, 19 Apr 2024 10:10:20 +0100 Subject: [PATCH 2/3] Fix jinja statement --- roles/grubcmdline/tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roles/grubcmdline/tasks/main.yml b/roles/grubcmdline/tasks/main.yml index 8e78c2d..b53e61a 100644 --- a/roles/grubcmdline/tasks/main.yml +++ b/roles/grubcmdline/tasks/main.yml @@ -22,7 +22,7 @@ - name: Set fact with the grub conf file path ansible.builtin.set_fact: - grub_conf_file: cloudinit_result.stat.exists | ternary(cloudinit_grub_conf, default_grub_conf) + grub_conf_file: "{{ cloudinit_result.stat.exists | ternary(cloudinit_grub_conf, default_grub_conf) }}" - name: Slurp grub config file ansible.builtin.slurp: From 245e2a7a68a97cc3502b73804da17c0b1e0ec985 Mon Sep 17 00:00:00 2001 From: James Osborne Date: Fri, 19 Apr 2024 10:54:46 +0100 Subject: [PATCH 3/3] Limit linting checks for variable names --- roles/grubcmdline/defaults/main.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roles/grubcmdline/defaults/main.yml b/roles/grubcmdline/defaults/main.yml index f5b581b..b8b7170 100644 --- a/roles/grubcmdline/defaults/main.yml +++ b/roles/grubcmdline/defaults/main.yml @@ -10,5 +10,5 @@ kernel_restart_handler: reboot # noqa var-naming[no-role-prefix] # filesystems due to filenames containing illegal characters backup_grub_config_file: true # noqa var-naming[no-role-prefix] -default_grub_conf: "/etc/default/grub" -cloudinit_grub_conf: "/etc/default/grub.d/50-cloudimg-settings.cfg" +default_grub_conf: "/etc/default/grub" # noqa var-naming[no-role-prefix] +cloudinit_grub_conf: "/etc/default/grub.d/50-cloudimg-settings.cfg" # noqa var-naming[no-role-prefix]