【问题标题】:How to pass multiple commands into salt cmd.run?如何将多个命令传递到 salt cmd.run?
【发布时间】: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


    【解决方案1】:

    在一般情况下,&& 应该可以正常工作,只要链中的每个命令都以 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-31
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 2020-11-30
      • 1970-01-01
      • 2020-10-09
      相关资源
      最近更新 更多