需要自定义LWRP

时间:2014-03-08 19:03:33

标签: chef lwrp

我试图创建我的第一个lwrp

我在:

创建了一个非常基本的资源+提供者
resources/rack_site.rb
providers/rack_site.rb

我一直在尝试在同一个食谱的配方中测试'rack_site'资源,但是它失败并显示有关未找到资源的错误。我尝试将这两个文件移动到我作为依赖项添加的食谱中,但仍然失败。

将自定义资源用于配方需要做些什么?

2 个答案:

答案 0 :(得分:8)

Chef使用cookbook的名称(在metadata.rb中定义)来为LWRP添加前缀。例如,如果您的食谱被命名为acme-nginx,并且您有一个名为rack_site.rb的资源,则食谱DSL中的关联LWRP为acme_nginx_rack_site。例如:

acme_nginx_rack_site 'foo' do
  # ...
end

Chef会自动将对Ruby方法无效的字符转换为下划线(包括破折号)。

答案 1 :(得分:6)

这也让我受益匪浅。您可以通过将metadata.rb中的cookbook名称和下划线添加到资源名称来访问LWRP。例如,如果机架站点资源位于Foo cookbook中:foo_rack_site