许多服务器的系统更新

Den*_*nia 11 remote-access debian update puppet

我们有很多服务器,但仍想全部更新。实际的方法是任何系统管理员从一个服务器到另一个服务器并制作一个aptitude update && aptitude upgrade- 这仍然不是很酷。

我现在正在寻找一个更好、更智能的解决方案。人偶可以做这个工作吗?你怎么做呢?

Kha*_*led 10

您可以使用以下exec类型:

exec { "upgrade_packages":
    command => "apt-get upgrade -q=2",
    path    => "/usr/local/bin/:/bin/:/usr/bin/",
    # path  => [ "/usr/local/bin/", "/bin/" ],  # alternative syntax
}
Run Code Online (Sandbox Code Playgroud)

老实说,我自己没有尝试过,但我认为您只需要创建一个包含此类 exec 定义的新模块即可。

apt-get upgrade命令是交互式的。为了让它安静地运行,您可以添加-q=2如上所示的选项。

  • 我们的 puppet 安装有一个类似的 exec,它检查文件上的时间戳,并且仅当它比客户端上的版本更新时才运行升级。当我们想要升级所有东西时,我们在木偶大师上“触摸”那个文件。 (7认同)
  • +1推荐Puppet!改变您作为系统管理员的生活 :) (3认同)
  • 请注意,此 exec 将在每次 Puppet 运行时运行(每 30 分钟),如果您有“大量服务器”,这可能会严重打击您的代理和/或镜像。就我个人而言,我建议为上面的 exec 类型实施一个计划,例如确保它只在晚上运行。但在我看来,Puppet 旨在强制执行系统状态,并且在没有人工监督的情况下运行类似 upgrade_packages 的命令,既有点吓人,又有点滥用 Puppet。Puppet Enterprise 附带的 mColective 工具(或等效的开源工具)可能是更好的选择。 (3认同)

gut*_*lho 7

如果您的所有主机都是 debian,您可以尝试无人值守升级包。

http://packages.debian.org/sid/unattended-upgrades

在这里,我们一直使用 puppet 来管理我们的 debian 虚拟机,使用 puppet 我们能够启用和管理所有服务器上的 unnatended-upgrade 配置。

最近我们的团队正在测试 mcollective 工具在所有服务器上运行命令,但是使用 mcollective 需要 ruby​​ 技能。

[s] 古托


小智 5

我建议去 Puppet、facter 和 mCollective。

mCollective 是一个非常好的框架,您可以使用因子作为过滤器在一系列主机(并行)上运行命令。

添加到本地代理/缓存,您就可以很好地进行服务器管理。