我有一個自定義資源(在一個名爲dsc_class.rb的文件中的cookbook/resources文件夾中)。基本上,這是一種無需安裝和使用完整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資源」的行動總是「執行」,這樣的事件。
如何在自定義資源中適當保護?
UPDATE:配方中含有
dsc_class "/install/dsc/MyDscResource.ps1"
你的配方代碼是什麼?應該像其他資源一樣應用於custom_resource – Tensibai
但要真正回答您,您應該實現'load_current_resource'並使用[converge_if_changed',如[here]所示(https://docs.chef.io/custom_resources.html#converge如果改變),並擺脫你的PowerShell資源中的守衛。在答案中引用文檔聽起來毫無用處。 – Tensibai
如果我這樣做,我如何在沒有powershell_script資源的情況下調用powershell腳本塊? – Jeff