7.3. 使用 bootloader RHEL 系统角色为引导装载程序菜单设置超时
您可以使用 bootloader
RHEL 系统角色,以自动的方式为 GRUB2 引导装载程序菜单配置超时。这样,您可以有效地更新一段时间,在此期间,您可以出于不同目的进行干预并选择一个非默认引导条目。
先决条件
- 您已准备好控制节点和受管节点
- 以可在受管主机上运行 playbook 的用户登录到控制节点。
-
用于连接到受管节点的帐户具有
sudo
权限。
流程
创建一个包含以下内容的 playbook 文件,如
~/playbook.yml
:--- - name: Configuration and management of GRUB2 boot loader hosts: managed-node-01.example.com tasks: - name: Update the boot loader timeout ansible.builtin.include_role: name: redhat.rhel_system_roles.bootloader vars: bootloader_timeout: 10
--- - name: Configuration and management of GRUB2 boot loader hosts: managed-node-01.example.com tasks: - name: Update the boot loader timeout ansible.builtin.include_role: name: redhat.rhel_system_roles.bootloader vars: bootloader_timeout: 10
Copy to Clipboard Copied! 示例 playbook 中指定的设置包括以下内容:
bootloader_timeout: 10
- 输入一个整数,以控制在引导默认条目之前 GRUB2 引导装载程序菜单显示多长时间。
有关 playbook 中使用的所有变量的详情,请查看控制节点上的
/usr/share/ansible/roles/rhel-system-roles.bootloader/README.md
文件。验证 playbook 语法:
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! 请注意,这个命令只验证语法,不会防止错误但有效的配置。
运行 playbook:
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied!
验证
远程重启受管节点:
ansible managed-node-01.example.com -m ansible.builtin.reboot
# ansible managed-node-01.example.com -m ansible.builtin.reboot managed-node-01.example.com | CHANGED => { "changed": true, "elapsed": 21, "rebooted": true }
Copy to Clipboard Copied! 在受管节点上,观察 GRUB2 引导菜单屏幕。
突出显示的将在 10s 后自动执行的条目
在 GRUB2 自动使用默认条目之前,此引导菜单显示多长时间。
替代方案:您可以远程查询受管节点的
/boot/grub2/grub.cfg
文件中的"timeout"设置:ansible managed-node-01.example.com -m ansible.builtin.command -a "grep 'timeout' /boot/grub2/grub.cfg" Fallback normal timeout code in case the timeout_style feature is
# ansible managed-node-01.example.com -m ansible.builtin.command -a "grep 'timeout' /boot/grub2/grub.cfg" managed-node-01.example.com | CHANGED | rc=0 >> if [ x$feature_timeout_style = xy ] ; then set timeout_style=menu set timeout=10 # Fallback normal timeout code in case the timeout_style feature is set timeout=10 if [ x$feature_timeout_style = xy ] ; then set timeout_style=menu set timeout=10 set orig_timeout_style=${timeout_style} set orig_timeout=${timeout} # timeout_style=menu + timeout=0 avoids the countdown code keypress check set timeout_style=menu set timeout=10 set timeout_style=hidden set timeout=10 if [ x$feature_timeout_style = xy ]; then if [ "${menu_show_once_timeout}" ]; then set timeout_style=menu set timeout=10 unset menu_show_once_timeout save_env menu_show_once_timeout
Copy to Clipboard Copied!