thedumbtechguy.unattended-upgrades
Ansible 角色:无人值守升级
一个用于在 Ubuntu 上设置无人值守升级的 ansible 角色。默认情况下,仅启用安全更新。
需求
此角色仅在
Ubuntu 16.04和Ubuntu 16.10上经过测试。
对于 Debian,您可能需要更改 unattended_origins_patterns 的值,因为默认目标是 Ubuntu。
无人值守邮件
如果您将 unattended_mail 设置为一个电子邮件地址,请确保系统中可以使用 mailx 命令,并且系统能够发送电子邮件。
自动重启
如果您启用自动重启功能 (unattended_automatic_reboot),该角色将尝试安装 update-notifier-common 包,这在某些系统中用于检测和执行升级后的重启。您可以选择定义特定的重启时间 (unattended_automatic_reboot_time)。
变量
unattended_origins_patterns:一个数组,用于确定软件包是否可以自动安装,更多详细信息请见下面的 Origins Patterns。- 默认值:
['origin=Ubuntu,archive=${distro_codename}-security']
- 默认值:
unattended_package_blacklist:不会自动升级的软件包- 默认值:
[]
- 默认值:
unattended_autofix_interrupted_dpkg:在 dpkg 非正常退出时是否运行dpkg --force-confold --configure -a- 默认值:
true
- 默认值:
unattended_minimal_steps:将升级分成尽可能小的部分,以便可以使用 SIGUSR1 中断。- 默认值:
false
- 默认值:
unattended_install_on_shutdown:在机器关闭时安装所有无人值守升级。- 默认值:
false
- 默认值:
unattended_mail:发送有关升级或无人值守升级问题的信息的电子邮件地址- 默认值:
false(不发送任何电子邮件)
- 默认值:
unattended_mail_only_on_error:仅在出现错误时发送电子邮件,否则每次软件包升级时都会发送电子邮件。- 默认值:
false
- 默认值:
unattended_remove_unused_dependencies:在升级后自动移除新的未使用依赖项。- 默认值:
false
- 默认值:
unattended_automatic_reboot:如果任何升级的软件包要求,立即自动重启系统。- 默认值:
false
- 默认值:
unattended_automatic_reboot_time:如果任何升级的软件包要求,以特定时间 (HH:MM) 自动重启系统,而不是在升级后立即重启。- 默认值:
false
- 默认值:
unattended_ignore_apps_require_restart:无人值守升级不会自动升级某些关键包,这些包在升级后需要重启(即它们的 debian/control 文件中有XB-Upgrade-Requires: app-restart指令)。将此选项设置为true,无人值守升级将无视该指令。- 默认值:
false
- 默认值:
来源模式
来源模式是比以前版本中的允许来源选项更强大的替代方案。
模式由特定的关键词组成:
a,archive,suite– 例如stable,trusty-security(archive=stable)c,component– 例如main,crontrib,non-free(component=main)l,label– 例如Debian,Debian-Security,Ubuntuo,origin– 例如Debian,Unofficial Multimedia Packages,Ubuntun,codename– 例如jessie,jessie-updates,trusty(仅在unattended-upgrades>= 0.80 时受支持)site– 例如http.debian.net
您可以使用 apt-cache policy 查看可用的存储库,并使用目标系统上的 unattended-upgrades -d 命令调试您的选择。
此外,无人值守升级支持两个宏(变量),源自 /etc/debian_version:
${distro_id}– 已安装的发行版名称,例如Debian或Ubuntu。${distro_codename}– 已安装的代号,例如jessie或trusty。
使用 ${distro_codename} 应优于使用 stable 或 oldstable,因为一旦 stable 移动到 oldstable,将不会安装任何安全更新,或者更糟糕的是,意外安装了较新发行版中的软件包。同样,在从 oldstable 升级到 stable 时,如果您忘记在来源模式中进行更改,您可能不会收到新发行版的安全更新。使用 ${distro_codename},这两种情况都不会发生。
使用示例
- hosts: all
vars:
unattended_origins_patterns:
- 'origin=Ubuntu,archive=${distro_codename}-security'
- 'o=Ubuntu,a=${distro_codename}-updates'
unattended_package_blacklist: [cowsay, vim]
unattended_mail: '[email protected]'
roles:
- setup_unattended_upgrades
模式示例
默认情况下,仅允许安全更新。您可以添加更多模式以允许无人值守更新自动安装更多软件包,但请注意,自动进行重大更新可能会导致系统出现问题。
在 Ubuntu 中,存档始终包含发行版代号。
unattended_origins_patterns:
- 'origin=Ubuntu,archive=${distro_codename}-security'
- 'o=Ubuntu,a=${distro_codename}'
- 'o=Ubuntu,a=${distro_codename}-updates'
- 'o=Ubuntu,a=${distro_codename}-proposed-updates'
许可证
MIT / BSD
作者信息
该角色由 TheDumbTechGuy 创建( twitter | blog | galaxy )
致谢
此角色基于以下原始作品构建:
