对于已经在运行配置管理工具的人来说,这可能是一个简单的问题。配置管理工具(如Puppet或Chef )是否是保持已安装软件包的最新更新的正确方法?
假设我运行了许多服务器,主要基于Debian和Ubuntu。当安全更新或错误修复出现时,配置管理工具是否使更新从存储库中安装的包变得更容易?
目前,我运行“无人值守的升级”可以让系统自动安装安全更新,但我仍然必须连接到服务器并经常运行aptitude update && aptitude safe-upgrade。当然,这会变得乏味、乏味和容易出错的服务器越多。
“木偶”或“厨师”等工具是保持已安装软件包的最新更新的正确方法吗?你们中有人使用这些工具来避免在15个服务器上手动运行aptitude或类似的工具吗?我很肯定这些问题的答案是“是的,当然!”
但是我在哪里可以找到关于这个特定用例的更多信息呢?我还没有时间深入研究木偶或厨师,而菜谱或类示例只显示了安装一个特定软件包(如ssh )的一些琐碎的例子。除了正式文档之外,您还有什么资源可以推荐吗(当然,一旦我知道哪些工具适合我,我就会研究这些文档)。
发布于 2010-01-10 19:53:00
木偶(我很确定厨师也会)和你的apt-get/yum软件库联系在一起。由于它们需要解决哪些包可用,这意味着ensure => latest只适用于Ubuntu/CentOS/Debian等。只要您正确地设置了适当的文件(/etc/apt/sources.list等)。
发布于 2009-12-14 13:38:51
你可以用木偶做,你要么做:
ensure => latest,或
ensure=> "1.0.2",若要指定最新/必需版本,请执行以下操作。即
package { apache2: ensure => "2.0.12-2" }
package { apache2: ensure => latest }这至少意味着您可以在所有系统中指定相同的版本,并防止服务器自动升级(可能很危险)。我在很多网站上都使用过这种方法,而且效果很好。
运行无人值守的升级会让我有点害怕,特别是当它们正在升级关键任务包、内核、mysql库、apache等时,尤其是如果安装脚本想要重新启动服务的话!
发布于 2010-02-25 15:02:07
我想这可能是个错误的问题。当然,使用配置管理工具(如Puppet和Chef )来维护您的基础设施是一个巨大的飞跃,而不是手动完成所有这些工作。使包版本保持最新和同步的问题不是这些工具中的任何一个直接解决的问题。要正确地自动化这一点,您需要将包存储库本身置于您的控制之下。
我这样做的方法是维护一个专用的Yum (用于Redhat/Fedora/CentOS;一个用于Debian/Ubuntu的APT存储库),其中包含了我关心的特定站点的包。这些通常是应用程序本身(Ruby、PHP、Apache、Nginx、库等)和安全关键包的依赖关系。
一旦您设置了这个选项(通常您可以从上游回购中镜像所需的包),您就可以使用Puppet的“确保=>最新”语法来确保您的所有机器都能与回购更新同步。
明智的做法是使用“分阶段”回购,使您能够测试更新版本的软件包,然后轻松地将它们滚动到生产中。通过使用存储库模板,可以轻松地使用Puppet完成这一操作,而无需重复代码。
自动化您的包版本强烈鼓励您使所有生产系统保持同步,因为为不同的OS发行版、版本和机器架构维护多个repos和包非常耗时,可能会导致各种模糊的问题和不兼容。
所有这些建议都同样适用于Ruby宝石、Python鸡蛋和其他您可能使用的包系统。
我已经写了一个小木偶教程,它可以帮助你快速地使用木偶运行起来。您可以使用木偶作为控制包版本的第一步,将自定义回购定义部署到计算机上。
https://serverfault.com/questions/94104
复制相似问题