需要自定义LWRP

Sys*_*ank 3 chef-infra lwrp

我被困在尝试创建我的第一个lwrp

我创建了一个非常基本的资源+提供者:

resources/rack_site.rb
providers/rack_site.rb
Run Code Online (Sandbox Code Playgroud)

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

将自定义资源用于配方必须做些什么?

set*_*rgo 8

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

acme_nginx_rack_site 'foo' do
  # ...
end
Run Code Online (Sandbox Code Playgroud)

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


gar*_*rtb 6

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