有没有办法从安装以来收集系统configuration更改?

在我尝试更换几年前build立的Linux服务器时,我意识到没有人知道自从安装/configuration了什么。 我在git唯一的东西是nginx的网站定义。

我有什么select来比较正在运行的服务器和干净的安装?

我想使用Ansible进行版本化configurationpipe理,但在此之前,我需要获得有关已安装服务及其configuration文件,防火墙规则,用户/组,SSH密钥,域设置等信息,我甚至不知道该怎么做考虑到。 我可以看到一个/data文件夹,所以这很简单,但它包含www数据, nodejs数据和nodejs应用程序,这意味着安装了一个node nodejsnodejs 。 我发现Jenkins安装的痕迹,但没有运行。 我可以看到一个fail2ban服务,所以这也需要移动。

有什么方法可以看到自初始设置以来发生了什么变化? 我想用一个干净的16.04replace这个Ubuntu 14.04使用Ansible的手册,以避免这种混乱,也许dockerize一些服务,同时保留目前的function。

首先,我build议从一个干净的石板开始。

从日志或用户访谈中确定仍在使用的服务,将其configuration隔离并将其设置在新框中。

不要浪费时间去挖掘这个盒子的历史。

更详细地解答你的问题:

您可能会从日志中获得有关系统更改内容的一些信息,但信息肯定是不完整的。

根据box的设置方式,根目录的.bash_history,/var/log/apt.log和/var/log/audit/audit.log可能会有所帮助,但是它们只能提供不能提供完整洞察力的线索。

dpkg -V会给你一个想法,哪些系统包的configuration文件被改变了。

如果新旧系统都使用软件包pipe理器,请输出并比较它们。 这样你就可以看到旧服务器上还有哪些附加软件包。

但是,如果安装了任何未通过软件包pipe理器安装的软件,则需要对文件系统级别的内容进行比较。

在那里,您将旧的文件系统和干净的安装文件系统安装在同一台服务器上,然后运行diff -b命令来显示目录中的差异。 这将产生大量的输出。