![](/img/trans.png)
[英]Using Chef Solo to provision a Windows EC2 instance and bootstrap it
[英]Running a windows batch command using chef blocks the chef provision
我正在Windows上使用Chef,需要運行一個批處理文件來啟動selenium-server java服務(java -jar seleniumserver.jar)作為守護程序。 當我嘗試使用windows_batch資源時,它會導致Chef在配置期間掛起。
問題是硒服務器在您啟動它的任何命令行中都保持運行,但是Chef在命令完成之前不會繼續配置機器。 問題是,命令永遠不會完成,這是不應該的。
到目前為止,這是我嘗試過的方法:
我很樂意接受任何想法,即使它有點古怪。 提前致謝!
如果我對問題的理解正確,則可以啟動一個單獨的過程,以便主批處理文件結束。 例如:
start java -jar seleniumserver.jar
您可以通過不同的start
選項控制多個執行參數。
以&
結尾的命令行與* nix並不相同。
Windows上的異步過程不會阻止Chef運行
批處理“運行”,執行代碼“ powershell -c“開始進程notepad.exe””,結束
以下是使用start-process來啟動帶有參數的命令的示例。
嘗試在命令提示符下單獨運行命令以熟悉其輸出。
net statistics server
現在使用powershell運行它,並在命令提示符下啟動進程,並驗證c:\\ output.txt中顯示的輸出正確。 請注意單引號或雙引號的使用。 根據我的經驗,由於某種原因,啟動過程無法使用雙引號。
powershell -c start-process net -ArgumentList 'statistics workstation' -RedirectStandardOutput c:\output.txt
現在,將以下內容放入Chef執行資源中並運行它。 同樣,請注意單引號,雙引號和轉義的單引號。
execute "run" do
command 'powershell -c "start-process net -ArgumentList \'statistics workstation\' -RedirectStandardOutput c:\chef-output.txt"'
end
您應該在c:\\ chef-output.txt中找到正確的輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.