如何在 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 厨师博客
我有两本从头开始编写的基本厨师食谱,一本食谱依赖于另一本。这两本食谱都不依赖于社区食谱。所以,我被要求用 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 厨师博客