【问题标题】:Why config files should't be changed line-by-line with Chef / Puppet?为什么不应该使用 Chef / Puppet 逐行更改配置文件?
【发布时间】:2013-01-30 20:54:30
【问题描述】:

为什么在 Chef 或 Puppet 中更改配置文件中的行被视为反模式? 据我了解,这有点像坏习惯。我假设这种文件编辑是以某种幂等方式并使用高级工具(例如 augeas)完成的。

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

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

【问题讨论】:

标签: configuration chef-infra puppet


【解决方案1】:

实际上,DevOps 社区中有很大一部分人认为接受配置文件的系统/包默认值,并且只通过augeas 修改您需要的内容作为首选方法,Github devops 就是其中之一(如果您碰巧在 Puppet Conf 2012 上抓住他们)。

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

这两种选择都有用例,但总的来说,我更喜欢“尽可能少拥有”的做法,而不是“即使你不必拥有一切”的做法。

【讨论】:

  • 这是一个很好的答案。只是一个附带问题 - 有没有像 chef 这样的工具,其开发人员来自“修改你需要的”阵营?
【解决方案2】:

就将您的系统设置为已知状态而言,部署整个文件比编辑要好,因为您确定完成后文件完全符合预期。

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

此外,一般而言,稳健地编辑文件比仅生成文件更难、更复杂。您可能会在基本情况下编写幂等的内容,但如果文件包含语法错误或无效内容,则您的编辑将不再有效。

尽管如此,有时您别无选择,而编辑是唯一的出路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    • 2012-09-30
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多