Cookbook A提供了一个LWRP,我希望在cookbook B中使用LWRP或HWRP进行扩展,以便我可以执行以下操作,provider_b
将使用{{1}中的现有代码/资源并接受它可以用于它自己的动作的其他属性:
provider_a
这是否可行,如果我想避免编辑食谱A,它仍然可以吗?
答案 0 :(得分:3)
我认为文档中关于Custom LWRPs的部分和最后链接的tutorial部分可以为您提供帮助。
编辑:好的,也许看this LWRP或this LWRP向正确的方向发展(因为我认为LWRP是一种非常常见的模式,我没有那么详细)。您可以使用new_resource.param_a
。
所以这样的事情应该有效:
action :install do
provider_a "A" do
param_a new_resource.param_a
end
provider_b "B" do
param_a new_resource.param_a
param_b new_resource.param_b
end
end
答案 1 :(得分:2)
听起来您正在尝试创建现有LWRP的子资源,因此您不会“包装”它 - 您正在“扩展它”。 LWRP语法使得这不太理想,因为资源在运行时动态编译到Ruby类中。
您可以切换到HWRP(新的Jenkins cookbook是一个使用继承和OO来扩展资源和共享属性的好例子)。就其本质而言,LWRP不是非常可扩展的,因为它们是在运行时动态重建和重新加载的。