3.2. 使用 Ansible Automation Platform 修补自动化


软件补丁是安全性和 IT 运维团队的基本活动。使补丁更新对于修复软件漏洞并满足合规要求至关重要,但大规模手动修补系统会非常耗时且容易出错。组织应考虑补丁管理策略,以满足其安全性、合规性和业务目标,以便优先排序要应用的补丁类型(已知漏洞、关键或重要漏洞、优化、日常更新、新功能等)。在定义了策略和优先级并建立补丁计划后,可以使用 Red Hat Ansible Automation Platform 自动执行补丁管理中的手动任务,以提高补丁部署速度和准确性、减少人为错误和限制停机时间。

3.2.1. 补丁自动化的好处

自动化补丁过程提供了很多优点:

  • 减少易出错的手动工作。
  • 减少大规模部署补丁的时间。
  • 确保在类似的系统间补丁的一致性。手动修复类似系统可能会导致人为错误(使用不同版本进行一个或多个补丁)影响一致性。
  • 启用复杂的补丁场景,在应用补丁前可能需要执行系统快照,或者在应用补丁时可能需要进行额外的配置更改。

3.2.2. 修补示例

以下 playbook 作为补丁示例提供,应进行修改以适合目标环境并在生产中使用前对其进行测试。这些示例使用 ansible.builtin.dnf 模块来管理 RHEL 上的软件包,以及使用 dnf 软件包管理器的其他操作系统。也提供用于修补其他 Linux 操作系统、Microsoft Windows 和许多网络设备的模块。

3.2.2.1. 保持一切最新

对于一些 Red Hat Enterprise Linux 服务器,如实验室或其他非生产系统,您可能需要以固定节奏安装所有可用的补丁。以下示例 playbook 可能用于每周运行的作业模板,并使用所有最新的 RPM 更新系统。

- name: Install all available RPM updates
  hosts: target_hosts
  become: true

  tasks:
    - name: Install latest RPMs
      ansible.builtin.dnf:
        name: '*'
        state: latest

3.2.2.2. 仅安装安全更新

对于具有策略的组织要求所有 RPM (包括安全勘误)保持最新状态,以下 playbook 可能会在定期调度的作业模板中使用:

- name: Install all security-related RPM updates
  hosts: target_hosts
  become: true

  tasks:
    - name: Install latest RPMs with security errata
      ansible.builtin.dnf:
        name: '*'
        security: true
        state: latest

3.2.2.3. 指定软件包版本

对于生产系统,经过良好建立的配置管理实践是仅部署已知、经过测试的软件组合,以确保系统配置正确,并如预期执行。这包括仅部署已知的操作系统软件和补丁版本,以确保系统更新不会引入生产应用程序的问题。

注意

以下示例 playbook 在目标主机使用 RHEL 9 操作系统时,会安装 httpd RPM 及其依赖项的特定版本。如果指定的版本已经就位,或者安装了不同的 RHEL 版本,则此 playbook 不会执行任何操作。

- name: Install specific RPM versions
  hosts: target_hosts
  gather_facts: true
  become: true

  vars:
    httpd_packages_rhel9:
      - httpd-2.4.53-11.el9_2.5
      - httpd-core-2.4.53-11.el9_2.5
      - httpd-filesystem-2.4.53-11.el9_2.5
      - httpd-tools-2.4.53-11.el9_2.5
      - mod_http2-1.15.19-4.el9_2.4
      - mod_lua-2.4.53-11.el9_2.5

  tasks:
    - name: Install httpd and dependencies
      ansible.builtin.dnf:
        name: '{{ httpd_packages_rhel9 }}'
        state: present
        allow_downgrade: true
    when:
      - ansible_distribution == "RedHat"
      - ansible_distribution_major_version == "9"
注意

通过设置 allow_downgrade: true,如果系统上安装了任何定义的软件包的新版本,则会将其降级到指定的版本。

3.2.3. 复杂的补丁场景

在 Ansible Automation Platform 中,多个自动化作业可以串联成工作流,可用于协调复杂补丁场景中的多个步骤。

以下示例复杂的补丁场景演示了在工作流中遇到错误时执行虚拟机快照、修补虚拟机并创建票据。

  1. 运行项目同步以确保最新的 playbook 可用。并行运行清单同步,以确保目标主机的最新列表可用。
  2. 为每个目标主机生成快照。

    1. 如果快照任务失败,请使用相关信息提交 ticket。
  3. 对每个目标主机进行补丁。

    1. 如果补丁任务失败,恢复快照并使用相关信息提交票据。
  4. 删除补丁任务成功的每个快照。

以下工作流视觉化显示了如何执行示例复杂补丁方案的组件:

Workflow representation

其他资源

如需有关工作流的更多信息,请参阅自动化控制器中的工作流

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.