Salt的cmd.run忽略Shell脚本返回代码

时间:2019-07-01 20:05:36

标签: shell tags salt stateful return-code

我正在使用一个简单的盐状态来发送(file.managed)并执行(cmd.run)在小兵/目标上的shell脚本。无论shell脚本发送什么退出值或返回值,盐主程序都会将结果解释为成功。

我尝试使用cmd.script,但在/ tmp下的文件的临时版本上始终出现权限拒绝错误。文件系统未使用noexec挂载,因此我们无法弄清为什么它不起作用。

对于cmd.run,作业输出中的stdout显示失败的返回码和消息,但Salt仍然表示成功。在小兵本地运行脚本会报告返回/退出代码。

我尝试将有状态:True添加到cmd.run块中,并按照文档中的说明在shell脚本末尾格式化了键值对。

针对2个小兵目标奔跑,失败1次成功。两者都将Result报告为True,但正确地用我的键值对填充了Comment。

我尝试了YES / NO,TRUE / FALSE,0/1-无效。

我的shell脚本的结尾,其格式设置如文档中所示。

echo Return_Code=${STATUS}
# exit ${STATUS}


if [[ ${STATUS} -ne 0 ]]
   then
      echo ""
      echo "changed=False comment='Failed'"
   else
      echo ""
      echo "changed=True comment='Success'"
fi

SLS块:

stop_oracle:
  cmd.run:
    - name: {{scriptDir}}/{{scriptName}}{{scriptArg}}
    - stateful: True
    - failhard: True

成功小兵的SLS输出:

----------
          ID: stop_oracle
    Function: cmd.run
        Name: /u01/orastage/oraclepsu/scripts/oracle_ss_wrapper.ksh stop
      Result: True
     Comment: Success
     Started: 14:37:44.519131
    Duration: 18930.344 ms
     Changes:
              ----------
              changed:
                  True
              pid:
                  26195
              retcode:
                  0
              stderr:
                  stty: standard input: Inappropriate ioctl for device
              stdout:
                  Script running under ROOT

                  Mon Jul  1 14:38:03 EDT 2019 : Successful
                  Return_Code=0

失败的奴才的SLS输出:

----------
          ID: stop_oracle
    Function: cmd.run
        Name: /u01/orastage/oraclepsu/scripts/oracle_ss_wrapper.ksh stop
      Result: True
     Comment: Failed
     Started: 14:07:14.153940
    Duration: 38116.134 ms
     Changes:

shell脚本的输出在失败目标上本地运行:

[oracle@a9tvdb102]:/home/oracle:>> 
/u01/orastage/oraclepsu/scripts/oracle_ss_wrapper.ksh stop

Mon Jul  1 15:29:18 EDT 2019 : There are errors in the process
Return_Code=1

changed=False comment='Failed'

shell脚本的输出在成功目标上本地运行:

[ /home/oracle ]
oracle@r9tvdo1004.giolab.local > 
/u01/orastage/oraclepsu/scripts/oracle_ss_wrapper.ksh stop

Mon Jul  1 16:03:18 EDT 2019 : Successful
Return_Code=0

changed=True comment='Success'

0 个答案:

没有答案