引言

在使用 Ansible 进行服务器管理时,我们经常遇到一些特定的挑战,特别是在使用 AWX 服务器管理一组服务器时。最近,我在 Ansible 2.9.18 版本中遇到一个问题:当尝试在托管内部仓库的服务器上进行 DNF 更新时,由于停用了 Podman 容器,导致无法连接到仓库。

问题描述

我的服务器配置如下:

  • 使用 Ansible ( 2.9.18 版本) 和 AWX 服务器管理多个服务器。
  • 这些服务器配置为从一个内部仓库更新软件包。
  • 所有服务都运行在 Podman 容器中。

更新流程如下:

  1. 检查是否有可用的更新,并设置相应的变量。
  2. 如果有更新,下载它们。
  3. 停止所有 Podman 容器以避免冲突。
  4. 安装更新,并在必要时重启服务器。
  5. 重新启动所有 Podman 容器。

在大多数服务器上,这个流程运行正常,但当在托管仓库的服务器上进行更新时,出现了问题。停止容器后,DNF 尝试访问已不可用的仓库,导致更新失败。

解决方案

使用 dnf 模块的 cacheonly 参数

最初的解决方案是使用 dnf 模块中的 cacheonly<