摘要
我可以使用来自外部食谱的LWRP而不以食谱名称为前缀吗?例如,如果mycookbook包含mylwrp资源,我如何才能做到这一点?
include_recipe 'mycookbook' # Contains "mylwrp"
mylwrp "frobulator" do
frobulations 42
end详细信息
我编写了一个名为mycookbook_mylwrp的LWRP,因为库食谱使用了正常的资源/提供者布局,如下所示
mycookbook/
├── providers
│ └── mylwrp.rb
└── resources
└── mylwrp.rb是否有可能
mycookbook食谱中mycookbook名称(mycookbook_mylwrp)为前缀我意识到我可以创建一本全新的食谱,并将其命名为"mylwrp“,并使用默认的提供者如下所示
mylwrp/
├── providers
│ └── default.rb
└── resources
└── default.rb但是,我必须为我想以这种方式使用的每一个LWRP制作专门的食谱。
发布于 2014-10-20 12:49:55
一种选择是使用HWRP。它们位于libraries目录中,而不是resources和providers中。如果您使用这条路线,我将查看poise库,它允许您使用与LWRP相同的技巧编写HWRP。
现在,所有这些都表明,你正在做的事情显然超出了常规。社区习惯于使用命名空间的自定义提供者来匹配声明它们的食谱。如果你想和社区分享这本食谱,你会引起一些混乱。即使您只在内部使用它,它也会使您为团队带来的任何新成员的学习曲线更加陡峭。所以,除非你有令人信服的理由去做,否则我强烈建议你避免这样做。
另一方面,如果你确实有一个强迫的理由,我建议你分享它,这样我们都能从你的想法中受益。
发布于 2014-10-20 02:28:22
不,LWRP都是全局的,因此名称空间被食谱命名,以避免碰撞。您也不需要include_recipe,这只涉及到运行配方代码。不过,您确实需要在depends中使用metadata.rb行。
https://stackoverflow.com/questions/26457519
复制相似问题