问题 :如果今天启动了服务器1,则所有已安装的软件包将基于当前的上游版本。 如果我明天启动server2,所有已安装的软件包将基于上游版本,除了这次,在server1和server2之间的24小时差异内,某些软件包的上游版本可能已经更改。 所以我们最终与server1和server2在安装包版本方面不同步。
我的目标是让整个基础架构中的所有服务器保持相同的“快照”版本,但仍支持定期更新过程。
例。 server1今天被抢购了。 作为捕捉过程的一部分,我运行以下命令:
yum update --downloadonly --downloaddir=/path/to/my/repo/base/v1 yum update --enablerepo=mybaserepo
这将做什么是拉下所有基于当前上游版本(快照)的RPM。 这允许我从“mybaserepo”托pipeRPM,所以当我更新其他服务器时,他们可以从我的仓库直接获得RPM,而不必担心上游RPM不再可用。
我正在考虑实施一个月度升级周期,所以v1在5.1.2013上快照,现在是6.1.13。 我当时正在考虑的一个stream程是:
这个循环每月重复一次。 我想这个策略解决了两个问题:
诚然, 没有绝对的单一答案,因为有很多方法来剥皮猫。 我正在寻找的是一种通用的,业界公认的做法,它直接回答了更新服务器的问题,同时还确保了企业环境中所有服务器的相同版本。
你可以使用yum –downloadonly,但你仍然需要创build一个回购。 如果您只是简单地反映现有的公共回购协议,并且只在需要时进行更新,那么这项工作已经完成。
yoonix的回答是投资于主动更新的好方法,我们都知道这是我们应该做的。 但是,如何处理实际情况也是一件好事。 :)我可能会推荐的一件事是cronjob会做这样的代码草图(未经testing):
#!/bin/bash email="[email protected]" sshuser="monitoringuser" servers=$(cat my-servers.txt) when=$(date '+%Y%m%d-%H%M%S') for server in servers; do ssh $sshuser@$server 'rpm -qa |sort' > server-$server-rpmqa-$when.txt done diffreport=diff-rpmqa-$when.txt diff -u server-*-rpmqa-$when.txt > $diffreport mail -a $diffreport -s "Package diff report for $when" $email
你可以看到周期性地运行'rpm -Va'(也许每周一次)并发送这些信息,检查特洛伊木马,configuration漂移等等也是有用的。
当然,这些脚本会产生只有高度技术人员才能读懂的“报告”,所以你可以考虑使用一个工具。 正如您现在可能期待的那样,我的公司Metafor Software就是这样一个工具! 🙂