Шеф-повар пользовательских ресурсов охраны

У меня есть собственный ресурс (в папке /resources моей поваренной книги в файле с именем dsc_class.rb). По сути, это способ легко вызвать ресурс класса DSC без его установки и использования полного механизма DSC.

resource_name :dsc_class

default_action :create

property :file_name, kind_of: String, required: true, name_property: true

action :create do  
  powershell_script file_name do
    cwd ::File.dirname(file_name)
    code <<-EOH
    gc "#{file_name}" -Raw | iex
    $o = New-Object #{file_name.split('/').last.split('.').first}
    $o.Set()
    EOH
    not_if <<-EOH
    gc "#{file_name}" -Raw | iex
    $o = New-Object #{file_name.split('/').last.split('.').first}
    o.Test()
    EOH
  end
end

Работает отлично - но действие всегда "выполняется", поэтому, когда ресурс не защищает и скрипт powershell не выполняется, я получаю "x resources updated" в журнале / выводе на запуск chef-client.

Как я могу надлежащим образом охранять свой пользовательский ресурс?

ОБНОВЛЕНИЕ: рецепт содержит

 dsc_class "/install/dsc/MyDscResource.ps1"

1 ответ

Решение

powershell_script как и все остальные executeресурсов, он всегда запускает команду / скрипт / что угодно и полагается на внешний уровень not_if или же only_if статьи. В этом случае вы бы поставить их на dsc_class экземпляр ресурса в вашем коде рецепта.

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