alemorvan.patchmanagement

补丁管理

由于系统更新通常不仅仅是 yum update -y,因此 patchmanagement 是一个 Ansible 角色,用于轻松管理 RedHat、CentOS、Debian 或 Ubuntu 操作系统下服务器的更新过程及其相关事务。

在进行补丁管理时,如果你想:

  • 在监控中将目标设置为维护模式
  • 在过程开始或结束时发送消息
  • 在出现故障时采取行动
  • 等等

这个角色将使你的生活更轻松。

无论如何,请记住,你绝对不应直接连接到服务器以进行升级。

需求

没有特别的要求。

功能

  • 收集系统的一些信息 - IP 地址和路由、正在运行的进程、挂载点(用于故障排除!别忘了!)
  • 对所有服务器执行自定义任务(见 pm_before_update_tasks_file 变量)
  • 对目标服务器执行自定义任务(见示例剧本章节)

我们的主要目标:

  • 使用 apt 或 yum 给服务器打补丁

然后:

  • 设置 Ansible 事实,以当前日期和所需的环境变量。
  • 对目标服务器执行自定义任务(见示例剧本章节)
  • 对所有服务器执行自定义任务(见 pm_after_update_tasks_file 变量)

角色变量

  • pm_restart_after_update: 默认值 true

更新后目标是否重启。这确保了最新内核正在运行,并且服务器及其服务可以重启。建议定期进行。

  • pm_logpath: 默认值 /etc/ansible/facts.d/PM.log

存储成功或失败的补丁管理日期的路径。

  • pm_date_format: 默认值 "{{ ansible_date_time.date }}-{{ ansible_date_time.time }}"

事实和日志路径中的日期格式化方式?

  • pm_fact_name: 默认值 pm

我们希望使用的事实名称?

  • pm_set_env_variable: 默认值 true
  • pm_env_file_path: 默认值 /etc/profile.d/last_pm_date.sh

我们是否设置一个包含 last_pm 日期的环境变量,以及脚本存储的位置?

  • pm_manage_yum_clean_all: 默认值 true

更新前执行 yum clean all。如果你之前下载过 RPM,建议设置为 false

  • pm_manage_apt_clean: 默认值 true

更新前执行 apt clean。

  • pm_manage_apt_autoremove: 默认值 true

自动移除不需要的 deb 包。

  • pm_apt_verbose_package_list: 默认值 false

打印 apt 结果列表。

  • pm_before_update_tasks_file

例如 custom_tasks/pm_before_update_tasks_file.yml。你可以将角色配置为在更新服务器之前执行此任务文件。目标文件中的每个任务都将被执行。

可以考虑在一些任务中加入发送消息、拍摄快照、设置维护模式等。

  • pm_after_update_tasks_file

例如 custom_tasks/pm_after_update_tasks_file.yml。你可以将角色配置为在更新服务器之后执行此任务文件。目标文件中的每个任务都将被执行。

示例剧本

配置剧本相当简单,如下所示:

    - name: 开始补丁管理
      hosts: servers
      vars:
        pm_before_update_tasks_file: custom_tasks/pm_before_update_tasks_file.yml
        pm_after_update_tasks_file: custom_tasks/pm_after_update_tasks_file.yml
      tasks:
        - name: "包含补丁管理"
          include_role:
            name: "alemorvan.patchmanagement"

除了这个剧本之外,你还可以为每个服务器创建两个其他任务文件,在升级它们之前和之后使用。这在例如从负载均衡器中移除节点、清除缓存、重启服务等操作时非常有用。

与变量 pm_before_update_tasks_filepm_after_update_tasks_file(针对所有目标执行操作的任务文件)不同,这些文件专注于特定于单个服务器的操作。

在剧本目录中,创建 custom_tasks 目录,并命名文件为 before_pm_{{ inventory_hostname_short }}_custom_tasks.ymlafter_pm_{{ inventory_hostname_short }}_custom_tasks.yml

      - name: 执行此服务器的自定义任务,定义在 after_pm_{{ inventory_hostname_short }}_custom_tasks.yml 文件中。
        debug:
          msg: "这个任务是定义在 after_pm_{{ inventory_hostname_short }}_custom_tasks.yml 文件中的自定义任务"

Molecule 测试

你可以通过 molecule 和 docker 测试这个角色:

      $ molecule test

查看 molecule/default/converge.yml 以获取该角色使用良好的示例。

许可

MIT

作者信息

该角色最初由 Antoine Le Morvan 为 Vivalto Sante 编写,基于 Nicolas Martin 和 Claranet France / BU RMP(Ismaël Ouattara 和 EliE Deloumeau)团队的工作。

关于项目

Ansible role to manage patchs managements on Linux for huge infrastructure with custom tasks per server basis or for all servers.

安装
ansible-galaxy install alemorvan.patchmanagement
许可证
mit
下载
762