也許這很簡單,我只是不理解的東西。我想從我寫的HWRP中調用Chef資源。在我的場景中,我想要調用reboot資源。我應該怎麼做呢?如何從HWRP調用Chef資源?
我已經試過類似如下:
def reboot_system
wu_reboot = Chef::Resource::Reboot.new('wu_reboot', :reboot_now)
wu_reboot.run_action(:reboot_now)
end
有幾件事情。我不確定是否應該創建Chef :: Resource :: Reboot或Chef :: Provider :: Reboot的實例。我也不太瞭解上面列出的第二個參數..這應該是「run_context」,但我不知道那是什麼。最後,我不知道如何設置屬性或調用一個動作。
我嘗試使用this作爲格式,但我一直無法使它工作到目前爲止。任何幫助理解將不勝感激。
編輯:
我看着source code,我可能只是執行此:
node.run_context.request_reboot(
:delay_mins => @new_resource.delay_mins,
:reason => @new_resource.reason,
:timestamp => Time.now,
:requested_by => @new_resource.name
)
不過,我不認爲這是最好的解決辦法。我想知道如何完成調用資源而不是繞過這種方式。
廚師運行拋出一個異常,說「未定義的方法'重新啓動'爲#等」。你能更清楚你的解決方案嗎?例如,我知道如果您設置「use_inline_resources」 –
Ci3
Hm,這將與LWRP一起使用。很公平。我想我從來沒有做過一個真正的HWRP。你看過'poise'嗎?我不知道你爲什麼選擇HWRP和LWRP,但最有可能你會發現這種平衡能夠讓你在兩個世界中都能達到最好的效果。 –
我選擇了一個HWRP,因爲我在我的提供者中有更多的原生Ruby代碼,並且它有點像LWRP一樣混亂(我最初嘗試過)。我會看看平靜。謝謝。 – Ci3