是否可以使用某个cookbook中的自定义资源,在自己的cookbook中创建一个自定义资源?

问题描述 投票:0回答:1

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

chef dependency-management chef-custom-resource
1个回答
1
投票

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

  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

0
投票

根据@Draco已经提到的,他所描述的两个步骤是必须的步骤。除此之外,在你的食谱中调用自定义资源的时候,需要对cookbook进行收录。

# 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

这样一来,在融合时,所有的资源都可以进行操作。

© www.soinside.com 2019 - 2024. All rights reserved.