我怎么可以编写扩展现有提供商厨师供应商?(How can I write a Chef provid

2019-10-19 05:52发布

食谱一个规定,我想在菜谱B中的LWRP或HWRP延伸,使得我可以做类似以下,其中LWRP provider_b将使用现有的代码/资源provider_a并接受它可以使用它的附加属性用自己的行动:

provider_a "A" do
    attr_from_a :value
end

provider_b "B" do
    attr_from_a :value
    attr_from_b :value
end

这是可能的,而且是它仍然可能的,如果我想避免编辑食谱阿?

Answer 1:

这听起来像你想创建现有LWRP的子资源,所以你不是“捆绑”了 - 你“推它”。 该LWRP语法使得这比预期少,因为资源在运行时动态编译成Ruby类。

你可以切换到HWRPs(新詹金斯食谱是使用继承和面向对象的扩展资源和共享属性一个很好的例子)。 就其性质而言,LWRPs都不是很可扩展的,因为它们是动态的重建,并在运行时重新加载。



Answer 2:

我认为,对部分自定义LWRPs的文档和教程末链接应该帮助你。

编辑:好吧,也许在看这个LWRP或本LWRP去多一点到正确的方向(我认为这是对LWRPs一个很常见的模式,我没去这么多细说)。 您可以通过访问参数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


文章来源: How can I write a Chef provider that extends an existing provider?