【问题标题】:is it possible to append a partial template to exsiting file? [chef cookbook]是否可以将部分模板附加到现有文件? [厨师食谱]
【发布时间】:2015-01-27 15:39:18
【问题描述】:

我希望将配置添加到从 tar 文件中提取的 conf 文件中。

目前食谱使用模板覆盖整个文件,而不是我需要使用原始文件作为模板并添加到它。

部分模板似乎可以完成任务,但我无法找到将部分模板应用于现有文件的示例,

有可能吗?

谢谢

【问题讨论】:

  • 如果您能解释为什么需要使用原始文件作为模板而不是仅使用标准厨师模板资源,我可能会给您一个更好的答案。
  • 应用程序在一个独立的 tar 中,所有必要的文件都应该并且在 tar 中,必须没有外部依赖项。因此,应用程序作为 tar 交付,而不是与说明书捆绑在一起。
  • 对,但在这种情况下,您应该不需要修改配置文件,对吧?如果您需要一个不同于 tar 中的配置文件,那么标准方法是简单地在您的说明书中创建一个模板来执行此配置。

标签: chef-infra partials cookbook chef-template


【解决方案1】:

不,你真的不能那样做。如果原件还不是 erb 模板,则不能以这种方式使用它。你真的有两个选择。

  1. 创建一个包含原始文件的模板作为其中的一部分。我认为这会起作用,虽然我从未尝试过,而且我不确定厨师的系统是否允许您使用食谱之外的文件作为部分文件。
  2. 使用 chef 的 FileUtil 模块来修改文件。如果你这样做,我强烈建议你创建一个 LWRP 来包装它,并在厨师缓存中创建新文件,然后与现有文件进行比较,如果有更改,则只“更新”。

实际上,您最好的选择几乎肯定是只使用自定义 erb 模板。如果您需要重新捕获原始数据中的某种特殊数据,您可以使用 ruby​​_block 从原始数据中读取该数据,然后将其传递到您的模板中。

【讨论】:

    【解决方案2】:

    看来您可以使用第二种方法。我曾尝试使用此示例中的部分模板,但 https://github.com/danielsdeleo/partials

    【讨论】:

    • 你能澄清你的答案吗?好像你有一个部分句子,如果它完成可能会有所帮助。 (谢谢)
    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    相关资源
    最近更新 更多