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
,Ubuntu
o
,origin
– 例如Debian
,Unofficial Multimedia Packages
,Ubuntu
n
,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 )
致谢
此角色基于以下原始作品构建: