thorian93.upgrade

Ansible 角色:升级


不再维护!已转移到集合中!

该角色已转移到我的 集合中。
此处不再维护
请访问 集合 获取最新内容。


该角色在 Debian/Ubuntu、RHEL/CentOS、Fedora 和 Suse 服务器上执行升级。

Ansible 角色:升级 Ansible 角色:升级 Ansible 角色:升级

功能

  • 重启检测和自动重启
  • 服务重启检测和自动重启服务
  • 升级报告
    • 通过邮件
    • 通过Telegram

小心使用!

APT 的重启和服务重启检查是通过 needrestart 实现的。对于 Fedora,则通过 dnf 插件 needs-restarting 实现。 对于 RHEL/CentOS,是通过 needs-restarting 工具实现的。

该角色使用输出或返回码来决定采取何种行动。你可以通过下面的变量配置行为。

这些方法都不完美,但效果尚可。使用前建议先查看一下该角色。

已知问题

  • Debian 11:如果没有明确设置 ansible_python_interpreter=/usr/bin/python3apt 模块将在运行时尝试安装 python-apt,这会失败。请查看 此问题 了解更多详情。
  • CentOS 8:重启检测无效,因为 dnf needs-restarting 插件缺少一个标志。不会在任何时间执行重启。
  • Fedora 32 及之前版本:服务重启检测无效,因为 dnf needs-restarting 插件缺少一个标志。不会在任何时间执行服务重启。
  • opensuse 15 和 42:缺少依赖项导致无法安装依赖工具。已经有解决方法。同时升级过程似乎不太稳定。尽管当前该角色似乎不会破坏系统,我仍会将这些发行版列为稳定版,但请小心!如果你知道如何解决这些问题,欢迎给我提示。
  • opensuse 15 和 42:服务重启检测采用“暴力”方法,因为解析 zypper ps -s 的输出非常麻烦。因此,目前如果需要重启服务,这些操作系统将直接重启。

要求

使用 Telegram 报告功能时:

collections:
- name: community.general
  version: 3.4.0

请注意,该角色需要root权限,因此请在带有全局 become: yes 的剧本中运行,或像这样在你的剧本中调用角色:

- hosts: foobar
  roles:
    - role: thorian93.upgrade
      become: yes

此外,该角色在重启后仅检查系统是否在 22 端口可用。如果需要其他检查或验证,则需要自行处理。

角色变量

可用变量如下所列,包括默认值(见 defaults/main.yml):

基本变量

upgrade_packages_on_hold: []

设置在升级前不想自动升级的包。

upgrade_unattended_reboot: true

启用在更新后必要时的无人值守重启。默认值为 true,设置为 false 可禁用重启。

upgrade_force_reboot: false

强制每台服务器重启,而不考虑重启检查结果。默认值为 false,设置为 true 可启用强制重启。

upgrade_needrestart_disable_interaction: true

needrestart 工具用于确定必要的重启和服务重启。有些发行版默认配置为交互式运行,这会破坏该角色。因此,默认设置为禁用所有交互。设置为 false 可启用交互。详细信息请参见手册。

upgrade_restart_services: true

启用自动重启服务。此选项会导致角色重启需要重启的服务。默认值为 true,设置为 false 以禁用重启。

upgrade_restart_services_blacklist:
  - auditd.service
  - dbus.service
  - systemd-manager.service

黑名单服务,不应或无法重启的服务。默认列表基于经验并加以扩展。欢迎报告需要添加的服务。

报告变量

upgrade_reporting_enable: false

启用此角色的报告功能,以输出已安装的更新,可选择写入文件。

upgrade_reporting_path: "."

定义报告的存放位置。默认值为当前工作目录。

upgrade_reporting_cleanup: true

清理用于发送报告的报告文件。保留它们可能对调试有用。

Telegram 报告变量

upgrade_reporting_telegram_enable: false

启用通过 Telegram 报告。你需要用你的凭证配置以下两个变量,以便实际通过 Telegram 发送消息! 详细信息请查看 模块文档

upgrade_telegram_token:  []

你的 Telegram 机器人令牌。

upgrade_telegram_chatid: []

你的 Telegram 聊天 ID。

邮件报告变量

upgrade_reporting_mail_enable: false

启用通过邮件报告。

upgrade_reporting_mail_subject: "Ansible 更新角色报告"

配置邮件的主题。

upgrade_reporting_mail_to: ""

定义邮件接收人。

upgrade_reporting_mail_from: ""

定义邮件发件人。

upgrade_reporting_mail_host: ""

定义邮件服务器或中继。

upgrade_reporting_mail_port: ""

定义邮件服务器端口。

upgrade_reporting_mail_user:
upgrade_reporting_mail_password:

如果邮件服务器需要身份验证,请在此处设置用户名和密码。如果不需要身份验证,请确保将变量留空,如此处所示!切勿像上面那样将其设为空。

upgrade_reporting_mail_run_once: true

如果你想每次执行时只发送一封邮件,请设置为 true。如果你更愿意每台主机发送一封邮件,请设置为 false

依赖

无。

操作系统兼容性

该角色确保不对不受支持或未经测试的操作系统使用,通过检查正确分发名称和主要版本号是否存在于名为 <role-name>_stable_os 的专用变量中。你可以在角色的默认变量文件 defaults/main.yml 中找到该变量:

role_stable_os:
  - Debian 10
  - Ubuntu 18
  - CentOS 7
  - Fedora 30

如果发行版和主要版本号不匹配目标系统,则角色将失败。要使角色正常工作,可以将发行版名称和主要版本名称添加到该变量中,操作就完成了。但请先测试新的组合!

感谢 HarryHarcourt 提出的这个想法!

示例剧本

---
- name: "运行角色"
  hosts: all
  become: yes
  roles:
    - ansible-role-upgrade

贡献

如果你发现任何错误、问题或看到改进的空间,请随时提出问题。也欢迎随时与我联系,如果你想询问或讨论任何事情。

声明

此角色按原样提供,我不能保证角色正常工作,也无法对该角色造成的任何损害或错误配置负责。在使用前请仔细研究该角色。

许可证

MIT

作者信息

该角色由 Thorian93 创建于 2019 年。

安装
ansible-galaxy install thorian93.upgrade
许可证
mit
下载
2k
拥有者
Greetings earthlings! I am a young Linux, IT and tech enthusiast and currently I am working as a checkmk consultant for Checkmk.