比较两个 RHEL 服务器的操作系统配置

比较两个 RHEL 服务器的操作系统配置

比较两个(或更多)RHEL 5.X 服务器的操作系统配置的最佳方法是什么?是否有可用的工具/软件包?请注意,我主要寻找可调操作系统(内核参数等)。

我想补充一下我们这样做的原因:

  1. 我们拥有大量的 zLinux 占用空间,并且想要将我们的“标准版本”与供应商提供的发行版进行比较。zLinux 在某种程度上是一种专门的架构,并且通常具有与 x86_64 不同的推荐设置。

  2. 如果我们有一个高度可用的服务器集群,则比较/确保它们之间的操作系统配置一致。

注意:我并不是在寻找像 puppet 或 chef 这样的集中式解决方案。我同意这些是最佳解决方案,肯定在路线图上,但不是我现在正在寻找的 :)

答案1

虽然它并不全面,但 rpm 可以提供一个良好的开端。您可以获取已安装软件包的列表:

rpm -qa > pkgs.txt

使用标准 UNIX 工具(例如 wc 和 cmp),您可以分辨出两台机器上有哪些包,哪些包不存在。

之后,您可以使用 --verify 选项查看是否有任何配置文件不同:

rpm --验证cat pkgs.txt

查看rpm 手册页有关 --verify 标志报告的信息。

答案2

最好的方法是采用集中式解决方案,因为“操作系统配置”不存在。Linux 不知道注册表,因此配置分散在整个文件系统中。这使得执行您想要的操作变得非常困难。

也就是说,您可以简单地将所有服务器的目录复制/etc到一个地方,然后将它们与diff -uNr

这应该会给你 90% 的配置,但你也会得到很多误报。

答案3

将操作系统根分区挂载到 /mnt/osA 和 /mnt/osB

diff -rq /mnt/osA /mnt/osB会给出类似于 Solaris 的输出lucompare

然后,您可以仔细比较更多相关文件的差异,例如 sysctl.conf、httpd.conf 等。

我怎么会忘记蓝图! 使用 Blueprint,您可以针对系统运行并获得与默认安装相比发生了哪些变化的配方。

答案4

sysctl 可能是你的好朋友。类似这样的命令:

for host in foo.example.com bar.example.com ; do
  ssh root@$host sysctl -a > $host.conf
done

然后你就不同了。:)

相关内容