负责将多台机器置于配置管理之下,我想知道如何将所有已安装软件包中的配置文件与以下内容进行比较/etc
以及任何其他包含标记为配置文件的文件的地方。例如,目标是能够识别任何更改并能够记录这些更改并将其转换为 Ansible 手册。
对于这个问题,可以假设所有包都是最新的,并且可以从包存储库中获取,并且部分包仍然缓存在本地。
我的主要兴趣是让它在基于 Debian 的机器上运行(主要是 Debian 本身和 Ubuntu),但最好也了解 CentOS(或 RHEL)的方法,因为这将是下一个目标。
本质上我对一种方法感兴趣这还远一点。我知道dpkg -c
并且我也是 的狂热用户etckeeper
,但etckeeper
不会帮助您进行比较确切地最新软件包安装的基线。可能debsums -e
与apt-file
和的组合apt-get
可以完成工作,但我不会遭受NIH综合征并且希望避免重新发明轮子。
答案1
说到 RPM 世界:
rpm -qc SOMEINSTALLEDPACKAGE
将为您提供该包的配置文件列表。
您可以使用以下方法根据原始包验证文件:
# sudo rpm -V chrony
S.5....T. c /etc/chrony.conf
chrony
这是我修改配置文件的包列表的示例。
另外 rpm 可以在安装过程中生成 .rpmsave 和 .rpmnew 软件包。看https://serverfault.com/a/48819您可以使用 合并这些文件rpmconf
。