如何在 chef 中为本地食谱编写一个 wrapper cookooks 而不依赖于 chef community 厨师食谱?

How to write a wrapper cookooks in chef for the local cookbooks and not dependent on the chef community chef cookbooks?

我有两本从头开始编写的基本厨师食谱,一本食谱依赖于另一本。这两本食谱都不依赖于社区食谱。所以,我被要求用 2 个基本厨师食谱创建一个包装食谱

例如: 我有两本食谱 "test-a" 和 "test-b",它们都可以在本地托管的厨师服务器上使用,并且不依赖于社区食谱。

要求使用上述食谱 "test-a" 和 "test-b" 创建包装食谱 "test"。这样,他们就可以做刀了bootstrap/role/run_list.

提前致谢

利用 role 对象中的 run_list。在你的情况下,它应该是这样的:

$ cat roles/test.json
{
  "run_list": [
    "recipe[test-a]",
    "recipe[test-b]"
  ]
}

另一种方法,是创建另一个名为 test 的食谱并使用 include_recipe,它应该是这样的:

$ cat test/recipes/default.rb
include_recipe 'test-a'
include_recipe 'test-b'

$ cat test/metadata.rb
depends 'test-a'
depends 'test-b'

如果您有想要覆盖的属性,请在 test 包装器说明书中进行。例如,如果 test-a 食谱具有 node.default[:foo] = 'baz' 等属性,则您可以按如下方式覆盖它

$ cat test/attributes/default.rb
node.default[:foo] = 'spam'

考虑阅读 Writing Wrapper Cookbooks and Doing Wrapper Cookbooks Right 厨师博客