我正在维护一个 Ubuntu 服务器映像作为具有多个部署的开发环境。
如果我的基础镜像发生变化——安装软件包、修改conf文件等——我会手动修补新系统,或者有选择地添加我知道我添加的deb文件。这有点乏味,而且我好几次错过了一些系统文件。
有办法自动化这个吗?这似乎是一个常见的场景,但我找不到解决方案。
我正在考虑一些类似的事情,即获取 rsync 比较的输出并根据这些差异生成 deb 安装包。我对这两个方面都没有任何经验,所以我想先检查一下是否有“现成”的解决方案。
答案1
听起来你在要求 DevStructure 的蓝图:
基本思想是你可以blueprint create
随时检查生成的蓝图,或者,这是令人惊奇的部分,它们的差异,即两个蓝图之间的差异。 除其他事项外它检查已安装的软件包。
创建的蓝图可以是推送到蓝图 I/O 服务或从蓝图 I/O 服务中拉出。它们还可以以各种格式呈现,例如外壳脚本,(审美挑战)Puppet 模块或 Chef 食谱, 和云信息模板。
编辑这不会在deb
文件中呈现您的更改,但如果您确实想要这样做,您可以创建一个无操作包,其中包含生成的 shell 脚本post-install
。
编辑2请注意,这不会给您任何回滚(例如在删除生成的存档时取消对文件的更改deb
)。我不相信有可能有螺栓固定的回滚能力(但看看尼克斯操作系统永远不会痛)。