为什么不应该使用Chef/Puppet逐行更改配置文件?

Mic*_*eld 9 configuration puppet chef-infra

为什么配置文件中的更改行被认为是Chef或Puppet中的反模式?正如我所理解的那样,这就像坏习惯.我假设这个文件编辑是以一些幂等方式和高级工具(例如augeas)完成的.

为什么使用ERB模板部署整个文件被认为是首选方法?

您可以找到很多示例,其中dev-ops建议使用模板而不是文件编辑.例如这里,这里,这里,等.

小智 13

实际上DevOps社区有很大一部分看到接受配置文件的系统/包默认值,只修改你需要的东西augeas作为首选方法,Github devops将是其中之一(如果碰巧在Puppet Conf 2012中捕获它们) ).

我认为使用默认模式始终使用模板会产生过高的维护负载,并且几乎总是需要锁定堆栈中所有内容的特定版本,否则您可能会遇到与该资源的较新版本不兼容的模板.

两种选择都有用例,但总的来说,我赞成"尽可能少的自己"练习,而不是"拥有一切,即使你不必"练习.


Dav*_*rio 5

在将系统设置为已知状态方面,部署整个文件比编辑更好,因为在完成后您确定文件完全符合预期.

如果您正在寻找问题的潜在解决方案并手动编辑某些配置文件,您不必担心您作为环境中不受控制的一部分而进行的手动编辑.下次运行chef-client时,您知道状态将与Chef配方中指定的状态完全相同,并且不会包含您的编辑.

而且,强健编辑文件通常比生成文件更难,更复杂.您可能会在基本情况下编写一些幂等的东西,但如果文件包含语法错误或其他内容无效,则编辑不再有效.

一如既往,有时你没有选择,编辑是唯一的方法.