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

Is it possible to use a custom resource from some cookbook to create a custom resource in your own cookbook?

我有一本食谱,假设我的食谱的名称是 check,我正在尝试通过将文件放在以下目录结构中来构建自定义资源:check/resources/myresource.rb。在这个 myresource.rb 文件中,我需要使用来自另一本食谱 line 的自定义资源。如何在 myresource.rb 中使用 line 食谱中的资源?

如果你想在你的食谱中使用它,你可以完全按照你的方式来做。

  1. 取决于定义了另一个自定义资源的说明书:
# metadata.rb

depends 'line', '~> X.Y' # add this line, replacing X and Y with line cookbook version
  1. 使用自定义资源。您可以在配方或您的自定义资源中使用它,任何您通常可以使用资源的地方。 (我以 line_resource 为例,真实名称不同,具体取决于它在 line cookbook 中声明的文件。)
# check/resources/myresource.rb

action :some_action do
  line_resource [...] do
    [...]
  end
end

根据@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

这样,在收敛时,所有资源都可以用于操作。