Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 需要自定义LWRP_Chef Infra_Lwrp - Fatal编程技术网

Chef infra 需要自定义LWRP

Chef infra 需要自定义LWRP,chef-infra,lwrp,Chef Infra,Lwrp,我一直在尝试创建我的第一个lwrp 我在以下位置创建了一个非常基本的资源+提供商: resources/rack_site.rb providers/rack_site.rb 我一直试图在同一本烹饪书的菜谱中测试“rack_site”资源,但失败了,出现了一个关于未找到资源的错误。我尝试将这两个文件移动到一个我添加为依赖项的cookbook中,但仍然失败 要将自定义资源用于配方,必须做些什么?这也让我感到困惑。您可以通过在metadata.rb中的cookbook名称前面加上下划线来访问LWR

我一直在尝试创建我的第一个lwrp

我在以下位置创建了一个非常基本的资源+提供商:

resources/rack_site.rb
providers/rack_site.rb
我一直试图在同一本烹饪书的菜谱中测试“rack_site”资源,但失败了,出现了一个关于未找到资源的错误。我尝试将这两个文件移动到一个我添加为依赖项的cookbook中,但仍然失败


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

这也让我感到困惑。您可以通过在
metadata.rb中的cookbook名称前面加上下划线来访问LWRP。例如,如果框架站点资源位于Foo cookbook中:
Foo\u rack\u站点

厨师使用该cookbook的名称(定义见
metadata.rb
)作为LWRPs的前缀。例如,如果您的烹饪书名为
acme nginx
,并且您有一个名为
rack\u site.rb
的资源,则配方DSL中关联的LWRP是
acme\u nginx\u rack\u site
。例如:

acme\u nginx\u机架\u站点“foo”do
# ...
结束

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

如果您不希望LWRP以cookbook名称作为前缀(大多数“重量级”资源的惯例是这样),则可以使用
提供的
方法指定较短的名称。在上述情况下,将
提供:rack_site
添加到资源文件和提供程序文件的顶部即可。