13

我想在厨师仓库中分享一些跨食谱的方法。我知道在食谱级别上,我可以将代码放在库目录中的模块中(请参阅相关问题)。我正在寻找的是类似的东西,但可以在我的 Chef 存储库中的所有食谱中找到。

我可以想到几个解决方案:

  • 创建一个 gem,将 gem 安装为 chef 运行的一部分。这似乎有点矫枉过正。
  • 将文件放在某个文件夹中,然后将该文件夹添加到$LOAD_PATH配方文件中。我有一种感觉不适用于实际部署,因为主厨服务器对存储库一无所知。
  • 将文件放在某个文件夹中,并将其符号链接到每个食谱的库目录中。

最后一个选项似乎是最可行的。有没有更好/更惯用的方法来做我想做的事?

4

2 回答 2

20

您可以使用另一个食谱中的库定义函数,但您必须告诉厨师您的食谱depend在提供的食谱上。

因此,例如,如果在食谱 A 中,您有一个libraries/default.rb提供某些功能的 a,f只要 B 的metadata.rb文件包含以下行,您就可以从食谱 B 访问它:

depends "A"

有关更多详细信息,请参阅有关元数据库的 Chef 文档。

于 2013-06-29T04:02:42.957 回答
1

有 3 个不同的选项允许以厨师资源(1. LWRP,2. HWRP)或方法(3.“”)的形式共享代码。我建议您首先考虑 LWRP。我发现这个答案很好地解释了上述技术之间的差异。

于 2015-09-15T17:55:30.737 回答