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保持一致。
成功重新执行命令并获取返回结果:
经验: