![有没有办法收集自安装以来的系统配置变化?](https://linux22.com/image/705226/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E6%94%B6%E9%9B%86%E8%87%AA%E5%AE%89%E8%A3%85%E4%BB%A5%E6%9D%A5%E7%9A%84%E7%B3%BB%E7%BB%9F%E9%85%8D%E7%BD%AE%E5%8F%98%E5%8C%96%EF%BC%9F.png)
在尝试更换几年前安装的 Linux 服务器时,我发现没有人知道自那时起安装/配置了什么。我唯一知道的git
是 nginx 站点定义。
我有哪些选项可以将正在运行的服务器与全新安装的服务器进行比较?
我想使用 Ansible 进行版本配置管理,但在此之前,我需要获取有关已安装服务及其配置文件、防火墙规则、用户/组、ssh 密钥、域设置等的信息,我甚至不知道该怎么想。我可以看到一个/data
文件夹,所以这很简单,但它包含www
数据、elasticsearch 数据和nodejs
应用程序,这意味着有一个node
已安装的pm2
和 elasticsearch。我发现了 Jenkins 安装的痕迹,但它没有运行。我可以看到 fail2ban 服务,所以它也需要移动。
有没有办法一目了然地看到自初始设置以来发生了什么变化?我想使用 Ansible playbooks 用干净的 16.04 替换此 Ubuntu 14.04,以避免这种混乱,也许还会将某些服务 dockerize,同时保留当前功能。
答案1
首先,我建议从头开始。
从日志或用户访谈中识别仍在使用的服务,隔离其配置并在新的机器上进行设置。
不要浪费时间去挖掘这个盒子的历史。
更详细地回答你的问题:
您可能会从日志中获得有关系统发生了什么更改的一些信息,但这些信息肯定是不完整的。
根据框的设置方式,root 的 .bash_history、/var/log/apt.log 和 /var/log/audit/audit.log 可能会有所帮助,但它们只能提供线索而不能给您完整的见解。
dpkg -V 将让您了解哪些系统包的配置文件已被更改。
答案2
如果新旧系统都使用包管理器,请获取它们的输出并进行比较。这样你就会看到旧服务器上有哪些额外的包。
但是,如果安装了任何不是通过包管理器安装的软件,那么您需要进行文件系统级别的内容比较。
在同一台服务器上安装旧文件系统和全新安装的文件系统,然后运行diff -b
命令来显示目录中的差异。这将生成大量输出。