У меня есть пользовательский ресурс (в папке моей куки-книги/ресурсов в файле dsc_class.rb). В принципе, это способ легко использовать ресурс класса DSC без его установки и использования полного механизма DSC.Chef Custom Resource Guard
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 скрипт не выполняется, я получаю «х ресурсов обновлялась» в журнале/вывода на шеф-клиента перспективе.
Как я могу надлежащим образом защитить свой ресурс?
UPDATE: рецепт содержит
dsc_class "/install/dsc/MyDscResource.ps1"
Ваш код рецепта? Гвардии должны применяться к custom_resource как к любому другому ресурсу. – Tensibai
Но для того, чтобы действительно ответить вам, вы должны реализовать 'load_current_resource' и использовать' с конверсией_f_changed', как показано [здесь] (https://docs.chef.io/custom_resources.html#converge -if-changed) и избавиться от охранника в вашем ресурсе powershell. Цитирование документации в ответ звучит непродуктивно. – Tensibai
если я это сделаю, как я могу вызвать блок сценариев powershell без ресурса powershell_script? – Jeff