saltstack在windows客戶端遠程執行腳本提示路徑不對的問題
環境:
salt-master ==2018.3.0
salt-minion ==2018.3.0
python== 2.7.5
centos==7
問題描述:
salt有個遠程執行命令的模塊cmd.script,在使用該模塊時,出現錯誤:
salt ‘minion-id’ cmd.script salt://test.ps1 shell=powershell
其中salt://爲/etc/salt.conf定義的base路徑,其下存放了test.ps1的腳本
# vim test.ps1
echo test
返回錯誤信息:
查看windows客戶端日誌c:\salt\var\log\salt\minion:
查看目錄確實minion已從master下載到window臨時目錄且隨機重命名
經查,系因爲2018.3.0版本salt有bug,該bug是把執行的腳本進過轉換成python的列表list,然後又重新轉換回字符串string類型,期間會加上單引號“’”,但是windows無法識別帶單引號的腳本名稱路徑格式,從而導致問題,具體可見python源代碼。
其實從2017.4版本就有,2017.7版本修復,但是因爲開了另一個版本分支,因此2018.3.0沒有修復該bug,只有2018.3.1才修復了。
https://github.com/saltstack/salt/pull/45716
https://github.com/saltstack/salt/pull/45716
解決辦法:
升級salt-master到2018.3.1版本,升級salt-minion到2018.3.1版本與master保持一致。
成功重新執行命令並獲取返回結果:
經驗:
在選擇工具的版本時,還是要多注意官網上的release note 說明,選擇較正常和穩定的版本避免後續遇到更多奇葩問題。
在提問或者幫助asker解決問題時,也要注意check版本信息,否則總會有些情況:爲什麼我明明follow正確解決方法來做就是不行?!
在解決的過程中,不知不覺就能掌握很多東西。
多看官網和社區,國內沒人能解答。