如何“更新”/“aptitude安全升级”许多主机?

我有两本关于Puppet的书,没有一本提到如何aptitude safe-upgrade yum updateaptitude safe-upgrade

所以我觉得木偶不能,我觉得很难相信。

你将如何推动yum updateaptitude safe-upgrade每个月在许多不同的主机上aptitude safe-upgrade

Puppet实际上只是一个configurationpipe理工具,而不是一个自动化工具。 如果你想要适当的自动化,那么你会希望看到作为第三方工具开始的mcollective,现在已经被傀儡的伞下。 我没有和mcollective一起工作,我也不能真正说出它会如何处理这个问题,但是我的理解是,它最适合作为一个任意的任务执行机制,当尝试执行定期重复的任务。

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

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

当您开始构buildconfiguration并回答这些问题时,您可能会发现更多将会出现在您的特定环境中。 举一个具体的例子,我做的是这样的:

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

这全部包含在两个文件中,即存储在/etc/cron.d和更新脚本中的两个cron条目(更新和内核检查)。 我正在做一个越来越杂乱的外观脚本,采取命令行参数执行更新或内核检查,是否重新启动。 木偶然后pipe理这两个文件。 既然你正在处理基于rpm和dpkg的系统,我可能会创build两个脚本或为这两个版本创build单独的do_update函数,并且每个函数都使用不同的命令行开关。 然后,您可以通过检查文件声明中的operatingsystem事实来推出正确的脚本,或者对cron条目进行模板化,并使用相同的事实来决定使用哪个开关。

使用经过良好testing的脚本,这种方法已经得到了很好的解决。 事实上,事实上,这个设置已经成功使用了几年,可以处理数百个系统。 当内核打包者开始向文件和比较例程扼stream器添加越来越多的次要版本时,我们偶尔会看到打嗝。

木偶本身并不是这项工作的工具。 Puppetlabs有一个叫做MCollective的独立工具,类似于Capistrano,Fabric和Func。

有一个名为Packages Agent的MCollecive 代理 ,它可以执行yum更新以及其他types的包pipe理。

你提到你的一部分基础设施正在运行Ubuntu。 也许你应该看看无人值守升级包。

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

有些人使用下面的puppet贴出来,有一些博客和网页写了关于如何整合Puppet和RHN Satellite。

另外….

如果你更关心一个新兴的项目,最终将取代RHN卫星,你可以看看Katello项目 。 Katello包含许多项目,它们是Red Hat的CloudForms产品的一部分,据说它是RHN Satellite最终替代品的上游。 事实上,Katello通过使用Foreman来整合Puppet。 长远来看,Katello绝对值得考虑Spacewalk(但是由于订阅/支持而不是RHN Satellite)。

**我已经在我的文章中提到RHN卫星和太空行走作为RHN卫星,以使事情更容易。 真正的区别是天气还是不是你有RHEL系统,如果是这种情况你需要RHN Satellite,因为它可以从RHN以受支持的方式下载,Spacewalk将用于使用RHEL或Fedora重build的用户(我了解太空行走也可能支持Debian,但我个人对这方面的了解不多。)因此,在search信息时,可能需要searchSpacewalk和/或RHN Satellite

您也可以使用cluster-ssh同时连接多个主机,并在所有主机上执行相同的命令。 我很确定你也可以编写脚本。

  sudo yum安装clusterssh 

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

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']; }

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

如果你不想在无人值守的情况下运行它,你可能需要使用Salt-stack。 注意在这个更新过程中salt-minion不会自动更新。 ZeroMQ会突然closures连接,更新将被中断,您将需要重新生成包DB(它发生在我在一堆Debian服务器上)。