比较两个(或更多)RHEL 5.X服务器的操作系统configuration的最佳方法是什么? 有没有工具/软件包可以做到这一点? 请注意,我主要是寻找可调谐的操作系统(内核参数等)。
我想补充一下我们为什么要这样做的原因:
我们有一个很大的zLinux足迹,并希望将我们的“标准构build”与供应商提供的发行版进行比较。 zLinux在某种程度上是一个专门的体系结构,通常与x86_64的build议设置不同。
如果我们有一个高度可用的服务器集群,则可以比较/确保它们之间的操作系统configuration是一致的。
注意:我不是在寻找像木偶或厨师这样的集中解决scheme。 我同意这些是最佳解决scheme肯定是在路线图上,但不是我正在寻找的东西:)
这不完全全面,但转速可以提供一个良好的开端。 您可以获取已安装软件包的列表:
rpm -qa > pkgs.txt
使用标准的UNIX工具(如wc和cmp),可以确定哪些软件包不在这两台机器上。
之后,您可以使用–verify选项来查看是否有任何configuration文件是不同的:
rpm – validationcat pkgs.txt
请参阅rpm手册页以获取有关由–verify标志报告的信息的信息。
最好的方法是集中式解决scheme,因为“OSconfiguration”不存在。 Linux不知道registry,所以configuration遍布整个文件系统。 这使得很难做到你想要的。
也就是说,您可以简单地将所有服务器的目录/etc复制到一个地方,然后将它们与diff -uNr进行diff -uNr
这应该给你90%的configuration,但你也会得到很多的错误的否定。
将OS根分区挂载到/ mnt / osA和/ mnt / osB中
diff -rq /mnt/osA /mnt/osB会给你一些类似于Solaris的lucompare输出
然后,你可以密切关注更多的文件,如sysctl.conf,httpd.conf等
我怎么能忘记蓝图 ! 借助蓝图,您可以针对系统运行并获得默认安装已更改的配方。
除非你的程序和工具遵守build议的目录布局,并且所有的configuration都以/etc结尾,否则没有简单的方法来“区分”你的操作系统安装。
sysctl可能是你的朋友。 有些东西是:
for host in foo.example.com bar.example.com ; do ssh root@$host sysctl -a > $host.conf done
然后你的差异。 🙂