Когда я создаю LWRP, почему ноль моего глобального ресурса в контексте ресурса Chef

Создание пользовательского LWRP сообщает, что ресурс не равен контексту ресурса шеф-повара. Это был мой первый шаг?

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 ответ

Я обнаружил, что с помощью @new_resource в подресурсе LWRP просто не работает, но с использованием new_resource (без @) отлично работает.

Другие вопросы по тегам