【发布时间】:2019-09-12 02:47:53
【问题描述】:
我需要执行一个带有属性文件的脚本,该文件在服务器上要求我位于脚本和属性文件的目录中。如何在不让 salt 执行另一个负责目录更改的脚本的情况下让 salt 实现这一目标?
我试过了
salt 'minion_id' cmd.run 'cd /my/directory && sh my_script.sh my_file.properties'
但这不起作用。
【问题讨论】:
标签: salt-stack
我需要执行一个带有属性文件的脚本,该文件在服务器上要求我位于脚本和属性文件的目录中。如何在不让 salt 执行另一个负责目录更改的脚本的情况下让 salt 实现这一目标?
我试过了
salt 'minion_id' cmd.run 'cd /my/directory && sh my_script.sh my_file.properties'
但这不起作用。
【问题讨论】:
标签: salt-stack
在一般情况下,&& 应该可以正常工作,只要链中的每个命令都以 0 退出。如果它们不会(没关系),您可以使用 ; 而不是 &&。您可能还需要完全限定任何二进制文件的路径(例如 /bin/sh 而不仅仅是 sh),因为 cmd.run 环境往往有一个相当裸露的路径。
也就是说,cmd.run 模块支持cwd 参数(请参阅the documentation),它指定要在其中执行的目录:
尝试类似:
salt 'minion_id' cmd.run '/bin/sh my_script.sh my_file.properties' cwd=/my/directory
或者如果你的脚本是可执行的并且有一个shebang:
salt 'minion_id' cmd.run './my_script.sh my_file.properties' cwd=/my/directory
【讨论】: