调用LWRP时的Cookbook名称前缀

时间:2014-10-20 01:54:44

标签: chef

摘要

我可以使用外部食谱中的LWRP而不添加烹饪书名称吗?例如,如果mycookbook包含mylwrp资源,我该怎么做?

include_recipe 'mycookbook' # Contains "mylwrp"
mylwrp "frobulator" do
   frobulations 42
end

详细

我写了一个名为mycookbook_mylwrp的LWRP,因为库菜谱使用了正常的资源/提供者布局,如下所示

mycookbook/
├── providers
│   └── mylwrp.rb
└── resources
    └── mylwrp.rb

是否有可能

  • 将LWRP保留在mycookbook食谱
  • 使用LWRP而不在mycookbook名称前加mycookbook_mylwrp

我意识到我可以创建一个全新的食谱并称之为" mylwrp"并使用默认提供程序,如下所示

mylwrp/
├── providers
│   └── default.rb
└── resources
    └── default.rb

然后我必须为我想要以这种方式使用的每个LWRP制作专用的烹饪书。

2 个答案:

答案 0 :(得分:1)

一种选择是使用HWRP。它们位于libraries目录中,而不是resourcesproviders。如果您走这条路,我会查看poise库,它允许您编写与LWRP具有相同技巧的HWRP。

现在,所有这一切,你正在做一些明显超出常规的事情。社区用于自定义提供者被命名空间以匹配声明它们的cookbook。如果你想与社区分享这本食谱,你会引起一些困惑。即使您只在内部使用它,它也会为您带入团队的新成员汲取学习曲线。因此,除非你有令人信服的理由这样做,否则我强烈建议你避免它。

另一方面,如果您确实有令人信服的理由,我建议您分享,以便我们都能从您的想法中受益。

答案 1 :(得分:0)

不,LWRP都是全局的,因此菜谱命名为防止冲突。您也不需要include_recipe,它只涉及运行配方代码。您确实需要metadata.rb中的depends行。