将基础 Linux 系统与当前状态进行比较以生成 playbook/dockerfile/shell 脚本?

将基础 Linux 系统与当前状态进行比较以生成 playbook/dockerfile/shell 脚本?

我正在寻找一种方法来生成安装脚本,将 Linux 系统的当前状态与基础映像(例如 Docker 映像)进行比较。输出将是从基础映像重新创建当前状态的操作列表 - 通常是一堆文件apt-get install和一堆修补程序应用程序。

这可行吗?现在还有这样的事吗?

答案1

对,这就是可能的

使用蓝图

Blueprint 是一款简单的配置管理工具,可对服务器进行逆向工程。它可找出您手动完成的操作,将其存储在本地 Git 存储库中,生成可重现您工作成果的代码,并帮助您将这些更改部署到生产环境中。

http://devstructure.com/blueprint/blueprint-diff.1.html

答案2

我曾经在 EMC 销售的一款灾难恢复产品 HomeBase 上工作过,它就是做这种事情的(尽管它从不支持 apt/dpkg 打包的 Linux)。让它可靠地工作是很难的。

如果您乐意重新安装同一组软件包,那么您应该能够轻松地拉出手动安装的软件包列表: https://askubuntu.com/questions/2389/generating-list-of-manually-installed-packages-and-querying-individual-packages

我不知道有什么简单的解决方案可以将 /etc 内容与基本 /etc 内容进行比较。即使这样,一些更改可能来自软件包安装,您必须小心不要多次应用这些更改。

最好的办法可能是手动重建系统,但要仔细记录所有执行的操作 - 可能使用某些版本控制系统来跟踪 /etc 更改。如果您无法手动重建,那么您可以随时考虑创建 docker 基础映像: https://docs.docker.com/articles/baseimages/

相关内容