Merge "Implement GRUB modification process"
This commit is contained in:
@@ -66,6 +66,17 @@ openstack_host_blacklist_kernel_modules: []
|
|||||||
# Command to update initramfs
|
# Command to update initramfs
|
||||||
openstack_host_initramfs_command: "{{ _openstack_host_initramfs_command | default('true') }}"
|
openstack_host_initramfs_command: "{{ _openstack_host_initramfs_command | default('true') }}"
|
||||||
|
|
||||||
|
# Custom options to define in GRUB_CMDLINE_LINUX_DEFAULT
|
||||||
|
# openstack_host_custom_grub_options:
|
||||||
|
# - key: hugepagesz
|
||||||
|
# value: 2MB
|
||||||
|
# - key: nomodeset
|
||||||
|
# - key: gfxpayload
|
||||||
|
# value: text
|
||||||
|
# state: absent
|
||||||
|
openstack_host_custom_grub_options: {}
|
||||||
|
openstack_host_update_grub_command: "{{ _openstack_host_update_grub_command }}"
|
||||||
|
|
||||||
# Overridable package list is composed of the old override
|
# Overridable package list is composed of the old override
|
||||||
# named user_package_list and the standard defaults _openstack_hosts_package_list
|
# named user_package_list and the standard defaults _openstack_hosts_package_list
|
||||||
openstack_hosts_package_list: "{{ _openstack_hosts_package_list + (user_package_list | default([])) }}"
|
openstack_hosts_package_list: "{{ _openstack_hosts_package_list + (user_package_list | default([])) }}"
|
||||||
|
@@ -16,6 +16,9 @@
|
|||||||
- name: Update initramfs # noqa: no-changed-when
|
- name: Update initramfs # noqa: no-changed-when
|
||||||
ansible.builtin.command: "{{ openstack_host_initramfs_command }}"
|
ansible.builtin.command: "{{ openstack_host_initramfs_command }}"
|
||||||
|
|
||||||
|
- name: Update GRUB # noqa: no-changed-when
|
||||||
|
ansible.builtin.command: "{{ openstack_host_update_grub_command }}"
|
||||||
|
|
||||||
- name: Restart sysstat
|
- name: Restart sysstat
|
||||||
ansible.builtin.service:
|
ansible.builtin.service:
|
||||||
name: "sysstat"
|
name: "sysstat"
|
||||||
|
6
releasenotes/notes/update_grub-ded0e9404f1f3be4.yaml
Normal file
6
releasenotes/notes/update_grub-ded0e9404f1f3be4.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
For ``openstack_hosts`` role implemented variable
|
||||||
|
``openstack_host_custom_grub_options`` which allows to modify ``GRUB_CMDLINE_LINUX_DEFAULT``
|
||||||
|
with arbitrary parameters or remove existing parameters from it.
|
@@ -113,6 +113,11 @@
|
|||||||
with_items: "{{ openstack_kernel_options + openstack_user_kernel_options }}"
|
with_items: "{{ openstack_kernel_options + openstack_user_kernel_options }}"
|
||||||
failed_when: false
|
failed_when: false
|
||||||
|
|
||||||
|
- name: Configure GRUB
|
||||||
|
ansible.builtin.include_tasks: openstack_grub.yml
|
||||||
|
when:
|
||||||
|
- openstack_host_custom_grub_options | length > 0
|
||||||
|
|
||||||
- name: Configure sysstat
|
- name: Configure sysstat
|
||||||
ansible.builtin.include_tasks: openstack_sysstat.yml
|
ansible.builtin.include_tasks: openstack_sysstat.yml
|
||||||
when:
|
when:
|
||||||
|
60
tasks/openstack_grub.yml
Normal file
60
tasks/openstack_grub.yml
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
---
|
||||||
|
# Copyright 2025, Cleura AB.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
|
||||||
|
- name: Fetch current GRUB parameters
|
||||||
|
ansible.builtin.shell: . /etc/default/grub && echo ${GRUB_CMDLINE_LINUX_DEFAULT}
|
||||||
|
register: _openstack_grub_default
|
||||||
|
changed_when: false
|
||||||
|
|
||||||
|
- name: Update GRUB options
|
||||||
|
ansible.builtin.lineinfile:
|
||||||
|
path: /etc/default/grub
|
||||||
|
regex: '^GRUB_CMDLINE_LINUX_DEFAULT='
|
||||||
|
line: 'GRUB_CMDLINE_LINUX_DEFAULT="{{ _openstack_resulting_grub_record }}"'
|
||||||
|
backup: true
|
||||||
|
mode: '0644'
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
notify:
|
||||||
|
- Update GRUB
|
||||||
|
vars:
|
||||||
|
# Create list of dicts from the parsed grub parameters, ie:
|
||||||
|
# [{'key': 'console', 'value': 'tty0'}]
|
||||||
|
_openstack_current_grub: >-
|
||||||
|
{{
|
||||||
|
_openstack_grub_default.stdout | split(' ') | map('split', '=') | map('zip', ['key', 'value']) | map('map', 'reverse') | map('community.general.dict')
|
||||||
|
}}
|
||||||
|
# Fetch list of user-provided records which have `state: absent`
|
||||||
|
_openstack_absent_grub_records: >-
|
||||||
|
{{
|
||||||
|
openstack_host_custom_grub_options | selectattr('state', 'defined') | selectattr('state', 'eq', 'absent') | ansible.utils.remove_keys(target='state')
|
||||||
|
}}
|
||||||
|
# Remove records which should be removed from the list
|
||||||
|
_openstack_filtered_custom_grub: >-
|
||||||
|
{{
|
||||||
|
openstack_host_custom_grub_options | selectattr('state', 'defined') | rejectattr('state', 'eq', 'absent') +
|
||||||
|
openstack_host_custom_grub_options | selectattr('state', 'undefined')
|
||||||
|
}}
|
||||||
|
# Combine the result back from dict to GRUB parameters
|
||||||
|
_openstack_resulting_grub_record: |-
|
||||||
|
{% set grub = [] %}
|
||||||
|
{% for record in (_openstack_current_grub + _openstack_filtered_custom_grub) | unique | reject('in', _openstack_absent_grub_records) %}
|
||||||
|
{% if 'value' in record %}
|
||||||
|
{% set _ = grub.append(record['key'] ~ '=' ~ record['value']) %}
|
||||||
|
{% else %}
|
||||||
|
{% set _ = grub.append(record['key']) %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{{ grub | join(' ') }}
|
@@ -19,6 +19,7 @@ openstack_host_sysstat_file: /etc/default/sysstat
|
|||||||
openstack_host_sysstat_cron_file: /etc/cron.d/sysstat
|
openstack_host_sysstat_cron_file: /etc/cron.d/sysstat
|
||||||
openstack_host_cron_template: sysstat.cron.debian.j2
|
openstack_host_cron_template: sysstat.cron.debian.j2
|
||||||
_openstack_host_initramfs_command: /usr/sbin/update-initramfs -u
|
_openstack_host_initramfs_command: /usr/sbin/update-initramfs -u
|
||||||
|
_openstack_host_update_grub_command: grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
|
|
||||||
## Kernel modules loaded on hosts
|
## Kernel modules loaded on hosts
|
||||||
openstack_host_kernel_modules:
|
openstack_host_kernel_modules:
|
||||||
|
@@ -19,6 +19,7 @@ openstack_host_sysstat_file: /etc/sysconfig/sysstat
|
|||||||
openstack_host_sysstat_cron_file: /etc/cron.d/sysstat
|
openstack_host_sysstat_cron_file: /etc/cron.d/sysstat
|
||||||
openstack_host_cron_template: sysstat.cron.redhat.j2
|
openstack_host_cron_template: sysstat.cron.redhat.j2
|
||||||
_openstack_host_initramfs_command: /bin/dracut -f
|
_openstack_host_initramfs_command: /bin/dracut -f
|
||||||
|
_openstack_host_update_grub_command: grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||||
|
|
||||||
openstack_host_sysstat_cron_mode: "0600"
|
openstack_host_sysstat_cron_mode: "0600"
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ openstack_host_sysstat_file: /etc/sysconfig/sysstat
|
|||||||
openstack_host_sysstat_cron_file: /etc/cron.d/sysstat
|
openstack_host_sysstat_cron_file: /etc/cron.d/sysstat
|
||||||
openstack_host_cron_template: sysstat.cron.redhat.j2
|
openstack_host_cron_template: sysstat.cron.redhat.j2
|
||||||
_openstack_host_initramfs_command: /bin/dracut -f
|
_openstack_host_initramfs_command: /bin/dracut -f
|
||||||
|
_openstack_host_update_grub_command: grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||||
|
|
||||||
openstack_host_sysstat_cron_mode: "0600"
|
openstack_host_sysstat_cron_mode: "0600"
|
||||||
|
|
||||||
|
@@ -19,6 +19,7 @@ openstack_host_sysstat_file: /etc/default/sysstat
|
|||||||
openstack_host_sysstat_cron_file: /etc/cron.d/sysstat
|
openstack_host_sysstat_cron_file: /etc/cron.d/sysstat
|
||||||
openstack_host_cron_template: sysstat.cron.debian.j2
|
openstack_host_cron_template: sysstat.cron.debian.j2
|
||||||
_openstack_host_initramfs_command: /usr/sbin/update-initramfs -u
|
_openstack_host_initramfs_command: /usr/sbin/update-initramfs -u
|
||||||
|
_openstack_host_update_grub_command: grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
|
|
||||||
## Kernel modules loaded on hosts
|
## Kernel modules loaded on hosts
|
||||||
openstack_host_kernel_modules:
|
openstack_host_kernel_modules:
|
||||||
|
Reference in New Issue
Block a user