cfengine3 file_copy 仅在源端更改

cfengine3 file_copy 仅在源端更改

我对所有文件复制承诺都使用“摘要”复制方法,由于我们打包和部署软件的方式,我不能依赖 mtime 作为更新文件的标准。出于各种原因,我没有使用带有中央配置服务器的客户端-服务器方法:而是将整个配置模块打包并部署到每台服务器上,因此从 cf-engine 的角度来看,源和目标是它正在运行的服务器上的本地。

这种方法存在的问题是,当源和目标不同时,源总是会更新目标——这正是我想要的最多的时间,通常是因为源已经更新。

但是,与许多其他 cfengine 用户一样,我们运行的是操作环境,偶尔需要立即应用紧急修复 - 这意味着我们没有时间重建和重新部署配置模块,并且修复通常通过部署包含特定更改的 tarball 来应用。当然,如果 cf-engine 在 5 分钟后出现并恢复更改,则会出现问题。

我们希望能够对我们的服务器进行小规模的增量更改,而无需还原这些更改,直到下一个部署周期,届时将复制新的源文件。我们认为随机文件损坏或错误更改不会带来足够的风险,因此需要 cfengine 不断将部署还原到其源副本 - 部署紧急修复并让它们保持这种状态直到下一次部署的能力将具有更大的价值和实用性。

因此,在经历了所有这些之后,我的问题是:cf-engine 是否能够检测出当文件不同时是源文件还是目标文件发生了变化,如果是的话,是否有办法使用“摘要”复制方法,但是仅有的如果源端发生变化会怎样?我对其他想法和方法也持开放态度,因为我对整个配置管理还很陌生。

答案1

要知道是源还是目标发生了变化,唯一的办法就是使用时间戳,cfengine 可以很好地做到这一点。也许你想得太多了。总的来说,我认为要么让 cfengine 管理,要么手动操作。寻找中间路线缺乏纪律,很快就会犯错。我还是会选择自动化。

答案2

为什么不把你的配置放在版本控制中,更新它而不是覆盖它?而不是复制文件,

hg pull -u

或者

svn update

修订控制工具将为您处理本地更改,直到您有机会提交并将其推送回中央存储库。

相关内容