题 如何“yum update”/“aptitude safe-upgrade”许多主机?


我有两本关于Puppet的书,但没有一本提到如何推动 yum update 要么 aptitude safe-upgrade

所以我得到的印象是Puppet不能,我觉得很难相信。

你会怎么推? yum update 要么 aptitude safe-upgrade 每月在许多不同的主机上?


6
2017-07-25 12:24






答案:


实际上,Puppet只是一个配置管理实用程序,而不是一个自动化工具。如果你想要适当的自动化,那么你会想要看看作为第三方工具开始的mcollective,现在已经被置于puppetlabs的保护之下。没有使用mcollective,我也无法真正说出它处理这个问题的能力,但我的理解是,它最适合作为一个任意的任务执行机制,在尝试定期重复任务时不能正常工作。

我相信最好的方法是开发一个你想要更新的脚本和进程,然后使用puppet推出配置。所以问自己以下问题。

  1. 我多久要更新一次机器?
  2. 我是否希望它们在安装新内核时自动重启,或者我只是想要通知?
  3. 我们应该在更新期间运行任何特殊命令吗?
  4. 我是否有足够的系统来更新应该交错?

当您开始构建配置并回答这些问题时,您可能会发现更多来自您的特定环境。对于一个具体的例子,我做的是这样的:

  • 对于我的大多数系统,每周更新一次,通过cron作业。根据目的和环境,一些系统更频繁。
  • 大多数系统会自动重启,某些系统(根据目的)通过电子邮件发送提醒重启。这是通过一个cron作业来处理的,该作业检查编号为vmlinuz的最高版本文件 /boot 反对的输出 uname -r
  • 在被RHEL 5.3-> 5.4的glibc更新烧毁后,我确保更新yum,然后是glibc,然后是其他所有内容。
  • 由于所有这些都是由cron作业运行的,所以我在每次yum运行之间都有随机时间睡觉。每个主机可能需要5分钟到45分钟才能完成,这样可以合理地分散负载。

这全部包含在两个文件中,存储在两个cron条目(更新和内核检查)中 /etc/cron.d 和更新脚本。我正在使用一个越来越凌乱的shell脚本来执行此操作,该脚本使用命令行参数来执行更新或内核检查以及是否重新启动。然后Puppet管理这两个文件。既然你正在处理基于rpm和dpkg的系统,我可能会创建两个脚本或分开 do_update 两种函数的函数,每个函数都调用一个不同的命令行开关。然后你可以通过检查来推出正确的脚本 operatingsystem 事实上在你的文件声明中,或者对cron条目进行模板化并使用相同的事实来决定使用哪个开关。

使用经过良好测试的脚本,这种方法已经很好地完成了。事实上,这个设置已经成功使用了几年来处理数百个系统。当内核打包器开始向文件添加越来越多级别的次要版本并且比较例程阻塞时,我们偶尔会看到打嗝。


12
2017-07-25 12:57



我不确定。使用puppet,你可以:class {'apt':update => {frequency =>'daily',},},其中频率告诉你多久一次。 - maxadamo


Puppet本身不是这项工作的工具。 Puppetlabs有一个名为MCollective的独立工具,类似于Capistrano,Fabric和Func。

有一个称为的MCollecive代理 包代理 能够进行yum更新,以及其他类型的包管理。

您提到您的基础架构的一部分正在运行Ubuntu。也许你应该调查一下 无人值守升级 包。


8
2017-07-25 12:55





如果您的主机是RHEL主机,您可能希望查看 RHN卫星。除此以外 太空行走 可能值得一看**(见下面的注释)。它们旨在管理上游软件包存储库的本地副本,并便于管理注册到RHN Satellite服务器的系统。您可以安排在特定时间更新软件包,或者如果您启用了OSAD,则可以在RHN Satellite / Spacewalk Web GUI中安排更新。

有些人发布了下面的木偶,有一些关于如何将Puppet与RHN Satellite集成的博客和网页。

另外....

如果您对查看最终取代RHN Satellite的新兴项目更感兴趣,可以查看一下 Katello项目。 Katello包含许多项目,这些项目是Red Hat CloudForms产品的一部分,据说是RHN Satellite最终更换的上游项目。事实上,Katello通过使用Foreman集成了Puppet。从长远来看Katello绝对值得在Spacewalk上考虑(但由于订阅/支持而不是RHN Satellite)。

**我在帖子中将RHN Satellite和Spacewalk都称为RHN Satellite,以简化操作。真正的区别是天气与否你有RHEL系统,如果是这种情况你将需要RHN Satellite,因为它可以以受支持的方式从RHN下载,Spacewalk将用于使用RHEL或Fedora的Rebuild的用户(我理解Spacewalk也可能支持Debian,但我个人对此并不了解。)因此,在搜索信息时可能需要搜索Spacewalk和/或RHN Satellite


5
2017-07-25 13:54





你也可以使用 集群SSH 连接到多个主机并在所有主机上执行相同的命令。我很确定你也可以编写脚本。

sudo yum安装clusterssh

然后,从命令行或GUI运行它,并添加您需要处理的所有主机。完成后,您可以从窗口运行任何命令,它将在您的设备上执行。


1
2017-07-25 13:31



我发现在经过几十个系统后,它开始变得非常烦人,有多少平铺的窗户堆积起来。它适用于少数系统,但要小心缩放。 - Scott Pack
是的,我想这取决于你想管理多少个系统和/或可用的屏幕空间 - poolski


Debian / Ubuntu系统可以更新如下:

class { 'apt': update => { frequency => 'weekly', }, }

在那之后,为了运行 upgrade,你可以应用下面显示的相同技巧。

对于CentOS / RedHat系统,您可以将exec订阅到哑文件:

exec { 'yum-update': command => '/usr/bin/yum -q -y update', refreshonly => true, subscribe => File['/some/dumb/file']; }

你更新 /some/dumb/file 在木偶上,它会触发yum更新

如果您不想在无人看管的情况下运行它,则可能需要使用Salt-stack。注意salt-minion在更新期间不会自行更新。 ZeroMQ将突然关闭连接,更新将被中断,您将需要重建包DB(它发生在我的一堆Debian服务器上)。


0
2017-07-16 16:35