2014-07-16 80 views
5

使用廚師的powershell_script提供程序如何引用存儲在廚師服務器上的文件,而不是將代碼定義在同一個文件中?基本上,我怎樣才能從廚師客戶端調用位於服務器上的.ps1?從文件運行廚師Powershell

回答

6

您可以直接在powershell_script之內調用未簽名的powershell腳本,只要your execution policy allows it,Chef在默認情況下會執行此操作。

powershell_script "run some script" do 
    code "c:/something/script.ps1" 
end 

如果你想廚師太部署腳本,您可以從菜譜與cookbook_file/files部分做到這一點。

+0

啊,好的。我對所有的例子都有些困惑,只是使用'代碼'來表示實際的代碼,但是我猜想它只是運行一個powershell命令而腳本名不起作用。但是使用這個,我會首先將腳本放在機器上,然後手動清理它。沒有太多的麻煩,但能夠運行遠程腳本並讓廚師爲我處理臨時創建會很好。 – Derongan

+2

嗯,DSL畢竟只是Ruby代碼。您可以從任何地方將「代碼」字符串拖入客戶端。你可以從本地食譜緩存中讀取File.read(「script.ps1」)。甚至'Net :: HTTP.get('example.com','script.ps1')' – Matt

+0

我對ruby沒有太多的熟悉,但這似乎基本上完全是我想要的!謝謝! – Derongan

0

對於多行代碼,不要忘記在powershell_script資源的代碼參數的每行末尾添加\ n。