Chef infra 是否可以使用某个食谱中的自定义资源在您自己的食谱中创建自定义资源?

Chef infra 是否可以使用某个食谱中的自定义资源在您自己的食谱中创建自定义资源?,chef-infra,dependency-management,chef-custom-resource,Chef Infra,Dependency Management,Chef Custom Resource,我有一本烹饪书,比如说我的烹饪书的名字是check,我正试图通过在以下目录结构中创建一个自定义资源:check/resources/myresource.rb。在这个myresource.rb文件中,我需要使用另一本烹饪书line中的自定义资源。如何使用myresource.rb中linecookbook中的资源?如果您想在食谱中使用它,您可以完全按照相同的方式使用 取决于定义了其他自定义资源的cookbook: #metadata.rb 取决于“行”、“~>X.Y”#添加此行,将X和Y替换为l

我有一本烹饪书,比如说我的烹饪书的名字是
check
,我正试图通过在以下目录结构中创建一个自定义资源:
check/resources/myresource.rb
。在这个
myresource.rb
文件中,我需要使用另一本烹饪书
line
中的自定义资源。如何使用
myresource.rb中
line
cookbook中的资源?

如果您想在食谱中使用它,您可以完全按照相同的方式使用

  • 取决于定义了其他自定义资源的cookbook:
  • #metadata.rb
    取决于“行”、“~>X.Y”#添加此行,将X和Y替换为line cookbook版本
    
  • 使用自定义资源。您可以在配方或自定义资源中使用它,也可以在任何可以使用资源的地方使用它。(我使用了
    line\u resource
    作为一个例子,根据
    line
    cookbook中声明的文件,实名是不同的。)
  • #检查/resources/myresource.rb
    动作:一些动作可以做
    行资源[…]do
    [...]
    终止
    终止
    
    根据@Draco已经提到的内容,他描述的两个步骤是必需的步骤。除此之外,当您在配方中调用自定义资源时,还需要包含烹饪书

    # check/resources/myresource.rb
    
    resource_name :myresource
    property :cookbook_inclusion, String
    property :some_name, String, name_property: true
    
    action :some_action do
      include_recipe new_resource.cookbook_inclusion
      line_resource [...] do
        [...]
      end
    end
    
    然后,当你在食谱中提到它时,你可以提到你想要包含的食谱的名称

    # check/recipes/default.rb
    
    myresource 'include' do
      cookbook_inclusion 'line'
    end
    

    这样,在融合时,所有资源都将可用于运营

    非常感谢你的回答。我尝试了这个方法,它在资源行中给了我一个未定义的方法错误。我使用了[link]()中line cookbook中的实际
    replace\u或\u add
    资源,我使用了
    line\u replace\u或\u add[…]do
    ,它给出了未定义的方法错误。请对此发表意见?正如您在第10行看到的,实际的资源名称是
    replace\u或\u add
    。当我使用
    replace\u或\u add[…]do
    时,我仍然会得到未定义的方法错误。