扩展Chef IIS池LWRP

时间:2016-09-23 06:10:54

标签: iis chef chef-recipe

我想扩展Chef IIS Pool LWRP(https://github.com/chef-cookbooks/iis/blob/master/resources/pool.rb),我希望有人可以帮我弄清楚语法。

这就是我所处的位置:
我创建了一本新的食谱,然后我引用了IIS食谱, 之后我在我的libraries文件夹中创建了这个文件:

# Located At: myCookbook/libraries/my_iis_pool.rb:
::Chef::Recipe.send(:include, Opscode::IIS)

class Chef
  class Resource::MyPool < Chef::Resource::IIS::Pool
    # Some Magic Happens
  end
end

然后配方看起来像这样:

# Located At: myCookbook/recipes/default.rb 
mypool 'new-pool' do
end

我似乎无法获得&lt; Chef :: Resource :: IIS :: Pool继承语句正确。 它会产生这个错误:
NameError:未初始化的常量Chef :: Resource :: IIS

我也试过

class Resource::MyPool < Chef::ResourceResolver.resolve(:iis_pool)

产生此错误:
TypeError:超类必须是Class(给定的NilClass)

任何帮助都将不胜感激。

谢谢,
Abrehm

1 个答案:

答案 0 :(得分:0)

不幸的是,没有一种直接扩展基于DSL的自定义资源的好方法。最好的方法是在内部创建一个使用iis_pool的新自定义资源,这有点像包装模式。这只允许您在现有资源代码之前或之后执行操作,但如果这还不够,您可能需要深入研究一些更令人兴奋的元编程,如edit_resource API或声明配方文件中的类。