Chef infra 是否可以将部分模板附加到现有文件?[厨师食谱]

Chef infra 是否可以将部分模板附加到现有文件?[厨师食谱],chef-infra,partials,cookbook,chef-template,Chef Infra,Partials,Cookbook,Chef Template,我希望将配置添加到从tar文件提取的conf文件中 目前的食谱是使用模板覆盖整个文件,而不是我需要使用原始文件作为模板,并添加到它 分部模板似乎可以完成此任务,但我还没有找到一个将分部应用于现有文件的示例 有可能吗 谢谢不,你真的不能那样做。如果原始模板不是erb模板,则不能以这种方式使用它。你真的有两个选择 创建一个模板,将原始文件作为部分包含在其中。我认为这会起作用,尽管我从未尝试过,而且我不确定chef's system是否会允许您使用烹饪书之外的文件作为部分内容 使用chef提供的Fil

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

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

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

有可能吗


谢谢

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

  • 创建一个模板,将原始文件作为部分包含在其中。我认为这会起作用,尽管我从未尝试过,而且我不确定chef's system是否会允许您使用烹饪书之外的文件作为部分内容
  • 使用chef提供的
    FileUtil
    模块就地修改文件。如果您这样做,我强烈建议您创建一个LWRP来包装它,并在chef缓存中创建新文件,然后与现有文件进行比较,只有在发生更改时才进行“更新”

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

    看来您可以使用第二种方法。我尝试过使用本例中的部分模板,但如果您能解释为什么需要使用原始文件作为模板,而不是仅使用标准的chef模板资源,我可能会给您一个更好的答案。该应用程序位于一个自包含的tar中,所有必要的文件都应位于tar中,必须没有外部依赖项。因此,应用程序是作为tar交付的,而不是与cookbook捆绑在一起。对,但在这种情况下,您不需要修改配置文件,对吗?如果您需要一个与tar中不同的配置文件,那么标准的方法是在您的食谱中创建一个模板来进行此配置。您能澄清您的答案吗?似乎你有一个部分句子,如果它完成了可能会有所帮助。(thx)