当我创建LWRP时,为什么将我的全局资源放入Chef资源上下文中

时间:2014-03-20 15:33:56

标签: chef chef-solo lwrp

自定义LWRP的创建报告资源在Chef的资源上下文中为零。这是我的第一步?

action :install do
  converge_by "Installing postgresql-#{@new_resource.version}" do    
    execute "sudo apt-get install postgresql-#{@new_resource.version} #{@new_resource.options}" do
      not_if { "dpkg --get-selections | grep postgresql-#{VERSION}" }
    end
    @new_resource.updated_by_last_action(true)
  end
end

但是,我将全局变量值保存在其他局部变量中。像这样:

action :install do
  converge_by "Installing postgresql-#{@new_resource.version}" do

    VERSION = @new_resource.version
    OPTIONS = @new_resource.options
    execute "sudo apt-get install postgresql-#{VERSION} #{OPTIONS}" do
      not_if { "dpkg --get-selections | grep postgresql-#{VERSION}" }
    end
    @new_resource.updated_by_last_action(true)
  end
end

然后,问题得到了解决。

Chef资源上下文中是否存在全局变量问题?

1 个答案:

答案 0 :(得分:1)

我发现在LWRP的子资源中使用@new_resource只是不起作用,但使用new_resource(没有@)可以正常工作。