Tronde.ansible_role_rhel_patchmanagement

RHEL补丁管理

针对红帽企业Linux服务器的补丁管理。

使用案例

在我们的环境中,我们为各部门部署RHEL服务器,以运行他们的应用程序。

这个角色是为了提供一个机制,使在目标节点上每月安装一次红帽咨询。系统管理员可以选择安装哪些咨询,例如RHSA、RHBA和/或RHEA。

在我们的特殊使用案例中,只安装RHSA,以确保最低的安全性。安装每月强制进行一次。咨询被汇总为“补丁集”。这样可以确保在补丁周期内所有阶段使用相同的咨询。

在Ansible库存中,节点被总结到以下组之一,这些组定义了节点何时安排进行补丁安装:

  • [rhel-patch-phase1] - 每月的第二个星期二
  • [rhel-patch-phase2] - 每月的第三个星期二
  • [rhel-patch-phase3] - 每月的第四个星期二
  • [rhel-patch-phase4] - 每月的第四个星期三

如果目标节点上的软件包被更新,主机会在之后重启。

由于生产系统最为重要,因此它们分为两个单独的组(phase3和phase4),以减少由于安装咨询而导致的故障和服务停机风险。

当然,您可以选择将哪些主机放入哪个阶段,以及您希望在哪一天运行补丁周期。请随意根据您的需求调整该角色。

使用Bash脚本在到期日触发运行补丁管理的剧本。

一旦角色设置完成,RHEL补丁管理将全面自动运行。请随时使用问题跟踪器询问关于角色使用或角色本身的问题,并报告您可能发现的错误。

如何获取咨询信息?

要检索咨询信息并在vars/main.yml中创建补丁集,您必须运行脚本create_vars.sh

有关咨询的进一步信息,您可以从客户门户订阅红帽咨询通知,或使用yum updateinfo list all命令获取咨询信息。

角色变量

vars/main.yml中的角色变量由create_vars.sh脚本自动设置,该脚本由cron触发。

示例剧本

包括一个如何使用您角色的示例(例如,作为参数传递的变量)对用户来说总是很好:


  • hosts: all

    tasks:

    • name: 按操作系统分组 group_by: key=os_{{ ansible_distribution }} changed_when: False
  • hosts: os_RedHat roles:

    • rhel_patchmanagement

如何使用此角色

请注意,以下操作指南是根据上述使用案例来工作的。如果您的使用案例不同,您可能需要调整某些内容。我假设您已经克隆了此repo或下载了所有必要的文件。之后,您需要执行以下步骤来使RHEL补丁管理正常工作。

  1. 编辑run_rhel_patch_mgmt.sh并插入用于连接到您的节点的ssh私钥。
  2. 创建一个cron作业,在每个星期二和星期三的指定时间运行run_rhel_patch_mgmt.sh。该脚本将根据上面提到的使用案例在这些时间触发ansible剧本。您可以根据需要进行调整。
  3. 您可能需要编辑patch_rhel.yml以适应您的需求。默认情况下,该剧本会在您的库存中所有安装了红帽操作系统的主机上运行,并且这些主机是相应的rhel-patch-phaseX组的成员。
  4. 将variables.txt.example重命名为variables.txt,并相应地编辑文件以适应您的环境。
  5. 编辑create_vars.sh,将源路径设置为variables.txt文件的绝对路径。
  6. 将variables.py.example重命名为variables.py,并编辑文件以指定ansible库存文件的绝对路径。
  7. 默认情况下,create_vars.sh在每月的第一个星期二运行,以创建一个新的vars/main.yml文件,其中包含当前的补丁集和mail_text.txt文件。
  8. 您可以使用函数send_mail自动将通知发送到指定的电子邮件地址。默认情况下启用此功能。
  9. 可选:您可以使用mail_text.txt的内容通知用户将要安装的咨询。

许可证

MIT

作者信息

  • 原作者: Joerg Kastning <joerg(dot)kastning(at)uni-bielefeld(dot)de>
关于项目

Patchmanagement for Red Hat Enterprise Linux.

安装
ansible-galaxy install Tronde.ansible_role_rhel_patchmanagement
许可证
mit
下载
350
拥有者
This is my personal GitHub account. For more information on me, visit my blog and/or social accounts.