【问题标题】:Using directory resource inside Chef Provider LWRP在 Chef Provider LWRP 中使用目录资源
【发布时间】:2021-01-15 12:31:40
【问题描述】:

我正在尝试使用 Chef LWRP 下的目录资源,但无法访问资源块内的属性,有没有办法做到这一点。 还是我完全错了,需要不同的方法来实现这一点。

my-cookbook/providers/default.rb

use_inline_resources

action :setup do
  directory node["#{@new_resource.name}"] do
    action :create
    not_if {node["#{@new_resource.name}"].include? "test"}
  end
end

not_if {node["#{@new_resource.name}"].include? "test"} 行上的 @new_resource.name 被评估为 nilClass,

虽然它在directory node["#{@new_resource.name}"] do 行中得到正确评估

谢谢

【问题讨论】:

    标签: chef-infra chef-recipe lwrp


    【解决方案1】:

    终于找到了

    当引用另一个资源中的变量时,我们需要在没有@的情况下访问它。

    action :setup do
      new_resource = @new_resource
      directory node["#{@new_resource.name}"] do
        action :create
        not_if {node["#{new_resource.name}"].include? "test"}
      end
    end
    

    感谢@stajkowski (GitHub)

    【讨论】:

    • 当你调用一个变量时,你也不应该使用插值。顺便说一句,你的代码在这里听起来真的很奇怪,你所追求的可能还有另一种方法......
    • 嗨@Tensibai。我希望你是对的,会有更好的解决方案。用例就像,我有一个食谱,每次都需要使用不同的属性调用它,并且由于厨师不会多次调用 include_recipe,我只是将食谱制作为 LWRP(实际上是食谱的复制粘贴)。这是一个很长的食谱,我只通过了一个资源来解释我的问题。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    相关资源
    最近更新 更多