thedumbtechguy.unattended-upgrades

Ansible 角色:无人值守升级

一个用于在 Ubuntu 上设置无人值守升级的 ansible 角色。默认情况下,仅启用安全更新。

需求

此角色仅在 Ubuntu 16.04Ubuntu 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-securityarchive=stable
  • c,component – 例如 main, crontrib, non-freecomponent=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} – 已安装的发行版名称,例如 DebianUbuntu
  • ${distro_codename} – 已安装的代号,例如 jessietrusty

使用 ${distro_codename} 应优于使用 stableoldstable,因为一旦 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

致谢

此角色基于以下原始作品构建:

关于项目

Configure unattended upgrades for Linux.

安装
ansible-galaxy install thedumbtechguy.unattended-upgrades
许可证
Unknown
下载
1.7k
拥有者