我有一部分运行 Ubuntu 的服务器,我正在尝试创建一个只对它们应用安全更新的剧本。我知道无人值守升级可以帮我完成这个任务,但我想更好地控制它的运行时间和应用时间。
我发现这个 SF 问题展示了如何使用 apt-get 从特定的 repo 文件安装更新:
如何使用 apt-get 仅在 ubuntu 上安装关键安全更新?
如果不存在此文件,我的剧本会创建它,但我似乎无法让 apt 模块将 sources.list 识别为选项,并且只读取此文件而不执行整个更新列表。以下是我目前所拥有的:
# apt-get upgrade -o Dir::Etc::SourceList=/etc/apt/security.sources.list
- name: Ubuntu - Install the security updates
apt:
force_apt_get: yes
state: latest
upgrade: yes
dpkg_options: "Dir::Etc::SourceList=/etc/apt/security.sources.list"
register: apt_output
当我针对测试 VirtualBox 映像运行剧本时,它显示它将升级 144 个软件包,而 aptitude 显示只需要 80 个安全软件包。
有什么想法我可以如何将 sources.list 文件作为选项传递给 apt 模块?
答案1
当 ansible apt 模块不够用时 - 使用 shell 模块:
- name: Ubuntu - Install the security updates
shell: apt-get update && apt-get upgrade -o Dir::Etc::SourceList=/etc/apt/security.sources.list