在我们的基础设施中,我们安装并通过 puppet 管理服务器。然后,我们所有的软件都从 rpm 安装。每台服务器上都有一个小脚本,如果存储库中有更改,它会执行 yum update。
我需要实现的是执行自动降级,这样安装在所有服务器上的软件包就与存储库中的最新软件包相同。我们希望以这种方式执行回滚。因此开发人员有一些简单的(Web 是必须的)界面来实时移动软件包/删除软件包(执行回滚/降级)。
我知道 debian 通过优先级(或某些特定的 apt magick - 我现在不确定,上次配置已经有一段时间了)支持此功能。
是否可以通过这种方式管理 yum 呢?
答案1
听起来您需要一个本地存储库镜像,您可以在其中控制版本 - 也许有不同的环境用于暂存、生产等。
理想情况下,您需要一台具有互联网连接和内部网络连接的服务器。它将在内部网络上运行 Web 服务器,可能针对不同的环境使用不同的路径:
http://192.168.1.10/staging/repo/
http://192.168.1.10/production/repo/
...等等。然后,您可以仔细管理软件包更新,并且内部网络上的所有服务器只需执行一个操作即可yum update
保持同步。通过在 puppet 中使用环境,您可以自动配置每个服务器以使用它,因为它是唯一的 yum repo,并防止它们访问互联网以获取更多软件包(即使它们确实有互联网连接)。
那样可以吗?
答案2
由于您正在使用 puppets 和 yum,您可能会考虑将软件包固定到特定版本,这样可以满足降级的情况,一种方法是从代表您配置的节点创建一个软件包列表,然后将该列表与存储库中的软件包进行比较。或者使用 forgebase 模块https://forge.puppetlabs.com/ryanuber/packagelist. 对于软件包仓库管理,如果你不需要 foreman/katello(如上所述),我建议你看看 mrepo、reposync,以及最好的 Pulp