Skip to content

Commit 63899ee

Browse files
committed
fix: more grub adjustments
1 parent 069273d commit 63899ee

File tree

1 file changed

+21
-10
lines changed

1 file changed

+21
-10
lines changed

ansible/tasks/setup-coredumps.yml

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,12 @@
8080

8181
- name: Check current GRUB_CMDLINE_LINUX_DEFAULT
8282
become: yes
83-
shell: grep '^GRUB_CMDLINE_LINUX_DEFAULT=' /etc/default/grub || echo 'GRUB_CMDLINE_LINUX_DEFAULT=""'
83+
shell: |
84+
if grep -q '^GRUB_CMDLINE_LINUX_DEFAULT=' /etc/default/grub; then
85+
grep '^GRUB_CMDLINE_LINUX_DEFAULT=' /etc/default/grub | sed 's/^GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"$/\1/'
86+
else
87+
echo ""
88+
fi
8489
register: current_grub_cmdline
8590
changed_when: false
8691
when: stage2_nix
@@ -92,26 +97,32 @@
9297
changed_when: false
9398
when: stage2_nix
9499

100+
- name: Prepare GRUB cmdline with coredump_filter
101+
set_fact:
102+
new_grub_cmdline: "{{ (current_grub_cmdline.stdout | regex_replace('coredump_filter=[0-9]+', '') | trim + ' coredump_filter=49') | trim }}"
103+
when: stage2_nix
104+
95105
- name: Update GRUB configuration for coredump_filter in main grub file
96106
become: yes
97107
lineinfile:
98108
path: /etc/default/grub
99109
regexp: '^GRUB_CMDLINE_LINUX_DEFAULT='
100-
line: 'GRUB_CMDLINE_LINUX_DEFAULT="{{ current_grub_cmdline.stdout | regex_replace("^GRUB_CMDLINE_LINUX_DEFAULT=\"(.*)\"$", "\\1") | regex_replace("coredump_filter=[0-9]+", "") | trim }} coredump_filter=49"'
101-
backrefs: no
110+
line: 'GRUB_CMDLINE_LINUX_DEFAULT="{{ new_grub_cmdline }}"'
111+
create: yes
102112
when:
103113
- stage2_nix
104114
- grub_d_files.stdout == ""
105115
register: grub_main_updated
106116

107117
- name: Update GRUB configuration for coredump_filter in grub.d files
108118
become: yes
109-
lineinfile:
110-
path: "{{ item }}"
111-
regexp: '^GRUB_CMDLINE_LINUX_DEFAULT='
112-
line: 'GRUB_CMDLINE_LINUX_DEFAULT="{{ lookup("pipe", "grep \"^GRUB_CMDLINE_LINUX_DEFAULT=\" " + item + " | sed \"s/^GRUB_CMDLINE_LINUX_DEFAULT=\\\"\\(.*\\)\\\"$/\\1/\" | sed \"s/coredump_filter=[0-9]*//g\"") | trim }} coredump_filter=49"'
113-
backrefs: no
114-
with_items: "{{ grub_d_files.stdout_lines }}"
119+
shell: |
120+
for file in {{ grub_d_files.stdout }}; do
121+
current=$(grep '^GRUB_CMDLINE_LINUX_DEFAULT=' "$file" | sed 's/^GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"$/\1/')
122+
new=$(echo "$current" | sed 's/coredump_filter=[0-9]*//g')
123+
new="${new} coredump_filter=49"
124+
sed -i "s/^GRUB_CMDLINE_LINUX_DEFAULT=.*/GRUB_CMDLINE_LINUX_DEFAULT=\"${new}\"/" "$file"
125+
done
115126
when:
116127
- stage2_nix
117128
- grub_d_files.stdout != ""
@@ -122,7 +133,7 @@
122133
command: update-grub
123134
when:
124135
- stage2_nix
125-
- grub_main_updated.changed or grub_d_updated.changed
136+
- (grub_main_updated is defined and grub_main_updated.changed) or (grub_d_updated is defined and grub_d_updated.changed)
126137

127138
- name: Install gdb for debugging
128139
become: yes

0 commit comments

Comments
 (0)