怎么用 Ansible 批量更新 Linux 内核版本并确保重启成功

文章导读
使用 Ansible 批量更新 Linux 内核版本,推荐通过 ELRepo 仓库安装长期支持(LTS)内核,配合 serial: 1 策略串行重启以避免集群不可用。此方案适用于 CentOS/RHEL 7 及以上版本,操作前需确认 CentOS 7 已于 2024 年 6 月 30 日停止维护,CentOS 8 已于 2021 年 12 月 31 日停止官方支持,生产环境升级需预留回滚窗口。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 常见问题
  7. G 参考来源
A A

使用 Ansible 批量更新 Linux 内核版本,推荐通过 ELRepo 仓库安装长期支持(LTS)内核,配合 serial: 1 策略串行重启以避免集群不可用。此方案适用于 CentOS/RHEL 7 及以上版本,操作前需确认 CentOS 7 已于 2024 年 6 月 30 日停止维护,CentOS 8 已于 2021 年 12 月 31 日停止官方支持,生产环境升级需预留回滚窗口。

先说结论:批量内核升级必须采用串行重启策略并保留旧内核引导项,优先选择 ELRepo 的 kernel-lt 长期支持版本。

  • 适合:CentOS/RHEL 7/8 集群、K8s 节点等需统一内核特性的场景
  • 先看:确认当前内核版本、/boot 分区空间及 ELRepo 源可用性
  • 建议:设置 Ansible serial: 1 控制并发,升级后验证 uname -r 及业务连通性

命令速用版

---
- hosts: all
  serial: 1
  tasks:
    - name: Install ELRepo
      yum:
        name: https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
        state: present
    - name: Install LTS Kernel
      yum:
        name: kernel-lt
        enablerepo: elrepo-kernel
        state: latest
    - name: Set Default Kernel
      command: grub2-set-default 0
    - name: Reboot
      reboot:
        reboot_timeout: 300

为什么会这样

内核升级涉及底层驱动与系统调用变更,直接并行重启会导致服务集群整体不可用。保留旧内核是为了在新内核启动失败时可通过 GRUB 菜单回滚,串行重启确保每次只有一台节点离线,保障业务连续性。

分步处理

1. 准备阶段:备份 /etc 及 /boot 目录,检查磁盘空间确保根分区和/boot 有足够空间(建议 5GB 以上)。

2. 配置源:导入 ELRepo 公钥并安装 elrepo-release 包,区分 kernel-ml(主线)与 kernel-lt(长期支持)。

怎么用 Ansible 批量更新 Linux 内核版本并确保重启成功

3. 编写 Playbook:使用 yum 模块安装内核,调用 grub2-set-default 设置启动项,使用 reboot 模块并配置 wait_for 连接等待。

4. 执行策略:在 playbook 头部设置 serial: 1 或 max_fail_percentage: 0,防止批量重启失败。

怎么验证是否生效

重启完成后执行 uname -r 确认内核版本号是否匹配目标版本。检查 /var/log/boot.log 或 dmesg 确认无驱动加载错误。业务层面验证端口连通性及应用日志无异常报错。

常见坑

1. 并行重启风险:未设置 serial 参数可能导致所有节点同时重启,造成服务中断。

2. 版本停止维护:CentOS 7 已于 2024 年 6 月 30 日停止维护,继续使用面临安全补丁缺失风险。

怎么用 Ansible 批量更新 Linux 内核版本并确保重启成功

3. 引导项设置:未执行 grub2-set-default 可能导致重启后仍进入旧内核。

常见问题

升级失败如何回滚?

重启时在 GRUB 菜单选择旧内核版本启动,进入系统后卸载新内核包即可。

CentOS 8 还能升级内核吗?

CentOS 8 已于 2021 年 12 月 31 日停止官方支持,建议迁移至 CentOS Stream 或 Rocky Linux。

是否需要重启所有节点?

内核升级必须重启才能生效,但可通过串行策略避免业务整体不可用。

参考来源

  • 51CTO 博客:ansible 批量升级内核版本至 4.19
  • Linux 内核怎么升级_Linux 内核升级方法与注意事项(2025 年 11 月 18 日)
  • CentOS Linux 内核升级(2020 年 4 月 27 日)
  • Linux 服务器批量重启策略:如何通过定时任务安全重启(2026 年 6 月 12 日)
  • 如何通过 Ansible 批量修改 Linux 服务器内核参数配置
  • Linux 系统升级(2025 年 7 月 26 日发布)