![使用 puppet 管理(和固定)软件包版本](https://linux22.com/image/802266/%E4%BD%BF%E7%94%A8%20puppet%20%E7%AE%A1%E7%90%86%EF%BC%88%E5%92%8C%E5%9B%BA%E5%AE%9A%EF%BC%89%E8%BD%AF%E4%BB%B6%E5%8C%85%E7%89%88%E6%9C%AC.png)
我有一个正在尝试使用 puppet 管理的安装。对于某些软件包,我们希望对其版本进行非常严格的控制。由于它们对我们的应用程序至关重要,因此我们仅在测试环境中测试后才升级它们,并且我们会在流量较少时安排升级。我不希望 puppet 在出现新软件包时升级我的数据库。我在我的 puppet 清单中指定了版本以防止软件包自动升级,但是当我使用相同配置生成另一个实例时,该版本的软件包已从 Ubuntu 存储库中消失。只有较新的版本才在那里。
对于某些软件包,我已经将它们自己打包到我自己的仓库中,但是打包数据库(postgresql)已被证明开销太大。
有什么解决方案或想法吗?
我们正在使用 Ubuntu 12.04.1 LTS。
答案1
这不是 Puppet 的问题,而是如何管理软件包存储库的问题。
如果您绝对需要坚持使用某个软件包的特定版本,那么您就不能依赖任何第二方或第三方继续为您提供该软件包。至少您需要将其保存在您控制的存储库中,就像您现在所做的那样。如果软件包对您来说如此重要,那么推出您自己的软件包不会“花费太多”,因此这个论点不成立。
您应该研究镜像上游存储库(apt-mirror、rsync)并自行决定何时让软件包过期。这样,您就始终拥有所需的版本。
关于 PostgreSQL,我可以告诉你,Ubuntu 和 Debian 软件包可以轻松安全地升级;无需因为担心会破坏某些东西而坚持使用特定(旧)版本的软件包。只需确保控制软件包升级和后续服务重启的时间和地点,但这是不言而喻的。