thorian93.upgrade
Ansible 角色:升级
不再维护!已转移到集合中!
该角色已转移到我的 主 集合中。
此处不再维护!
请访问 集合 获取最新内容。
该角色在 Debian/Ubuntu、RHEL/CentOS、Fedora 和 Suse 服务器上执行升级。
功能
- 重启检测和自动重启
- 服务重启检测和自动重启服务
- 升级报告
- 通过邮件
- 通过Telegram
小心使用!
APT 的重启和服务重启检查是通过 needrestart 实现的。对于 Fedora,则通过 dnf 插件 needs-restarting 实现。 对于 RHEL/CentOS,是通过 needs-restarting 工具实现的。
该角色使用输出或返回码来决定采取何种行动。你可以通过下面的变量配置行为。
这些方法都不完美,但效果尚可。使用前建议先查看一下该角色。
已知问题
- Debian 11:如果没有明确设置
ansible_python_interpreter=/usr/bin/python3
,apt
模块将在运行时尝试安装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