Шеф-повар пользовательских ресурсов охраны
У меня есть собственный ресурс (в папке /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
экземпляр ресурса в вашем коде рецепта.