Соль cmd.run игнорирует код возврата сценария оболочки - PullRequest
0 голосов
/ 01 июля 2019

Я использую простое состояние соли для отправки (file.managed) и выполнения (cmd.run) сценария оболочки для миньона / цели. Независимо от того, какое выходное или возвращаемое значение посылает сценарий оболочки, солевой мастер интерпретирует результат как успешный.

Я пытался использовать cmd.script, но получаю сообщение об ошибке отказа в разрешении для временной версии файла в / tmp. Файловая система не монтируется с помощью noexec, поэтому мы не можем понять, почему она не будет работать.

Для cmd.run вывод stdout в выводе задания показывает ошибочный код возврата и сообщение, но Солт все еще говорит Успех. Локальный запуск сценария на миньоне сообщает ожидаемый код возврата / выхода.

Я попытался добавить stateful: True в блок cmd.run и отформатировал пары ключ-значение в конце сценария оболочки, как показано в документации.

Бег против 2 миньонов, 1 провал, 1 успешный. Оба сообщают Result как True, но правильно заполняют Комментарий с моей парой ключ-значение.

Я пробовал ДА / НЕТ, ИСТИНА / ЛОЖЬ, 0/1 - ничего не работает.

Конец моего сценария оболочки, отформатированный как показано в документации.

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 из миньона Failed:

----------
          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:

Вывод из сценария оболочки, запускаемого локально при сбое цели:

[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'

Вывод сценария оболочки, запускаемого локально при достижении цели:

[ /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'
...