我对所有文件复制承诺使用“摘要”复制方法,因为我们打包和部署软件的方式,我不能依赖 mtime 来更新文件的标准。由于各种原因,我没有使用客户端-服务器方法和中央配置服务器:而是我们将整个配置模块打包并部署到每个服务器,所以从 cf-engine 的角度来看,源和目标在服务器上是本地的跑步。
我在使用这种方法时遇到的问题是,当它们不同时,源总是会更新目标——这是我大部分时间想要的,通常是因为源已经更新。
但是,像许多其他 cfengine 用户一样,我们正在运行一个操作环境,有时必须立即应用紧急修复 - 这意味着我们没有时间重建和重新部署配置模块,并且修复通常会通过部署一个带有特定更改的压缩包。当然,如果 cf-engine 在 5 分钟后出现并恢复更改,这将是有问题的。
我们想要的是能够对我们的服务器进行小的、增量的更改,而不会恢复它们,直到下一个部署周期复制新的源文件。我们不认为随机文件损坏或错误更改涉及足够的风险来保证 cfengine 不断将部署恢复到其源副本 - 部署紧急修复并让它们保持这种状态直到下一次部署的能力将具有更大的价值和实用性.
所以,毕竟,我的问题是:cf-engine 是否能够检测当文件不同时是源还是目标发生了变化,如果是,它们是一种使用“摘要”复制方法的方法,但仅限于如果源端改变了?我对其他想法和方法也非常开放,因为我对整个配置管理的东西还是很陌生。
知道更改的是源还是目标的唯一方法是使用时间戳,cfengine 可以很好地做到这一点。也许你想多了。一般来说,我认为要么让 cfengine 管理,要么手动完成。寻找中间道路缺乏纪律,你很快就会犯错误。我会选择自动化。
为什么不把你的配置放在版本控制中,更新而不是覆盖呢?而不是复制文件,
或者
修订控制工具将为您处理本地更改,直到您有机会提交并将它们推送回中央存储库。