如何在厨师中为本地食谱编写包装厨师,而不是依赖厨师社区的厨师食谱?

时间:2018-12-02 21:35:24

标签: chef wrapper devops knife

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

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

询问要使用上述食谱“ test-a”和“ test-b”创建包装食谱“ test”。这样,他们就可以执行“ bootstrap / role / run_list”。

预先感谢

1 个答案:

答案 0 :(得分:0)

利用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 CookbooksDoing Wrapper Cookbooks Right