2015-01-13 3 views
7

Я пытаюсь вызвать команду на предоставление через Saltstack. Если команда терпит неудачу, то я получаю состояние сбой, и я не хочу этого (retcode команды не имеет значения).Saltstack: игнорирование результата cmd.run

В настоящее время у меня есть следующий обходной путь:

Run something: 
    cmd.run: 
    - name: command_which_can_fail || true 

есть ли способ, чтобы сделать такое состояние игнорировать RETCODE с использованием функции соли? или, может быть, я могу исключить это состояние из журналов?

ответ

9

Использование check_cmd:

fails: 
    cmd.run: 
    - name: /bin/false 

succeeds: 
    cmd.run: 
    - name: /bin/false 
    - check_cmd: 
     - /bin/true 

Выход:

local: 
---------- 
      ID: fails 
    Function: cmd.run 
     Name: /bin/false 
     Result: False 
    Comment: Command "/bin/false" run 
    Started: 16:04:40.189840 
    Duration: 7.347 ms 
    Changes: 
       ---------- 
       pid: 
        4021 
       retcode: 
        1 
       stderr: 

       stdout: 

---------- 
      ID: succeeds 
    Function: cmd.run 
     Name: /bin/false 
     Result: True 
    Comment: check_cmd determined the state succeeded 
    Started: 16:04:40.197672 
    Duration: 13.293 ms 
    Changes: 
       ---------- 
       pid: 
        4022 
       retcode: 
        1 
       stderr: 

       stdout: 


Summary 
------------ 
Succeeded: 1 (changed=2) 
Failed: 1 
------------ 
Total states run:  2 
+0

check_cmd больше не существует на 2017.7.0 – Dereckson

+1

@Dereckson Нет, он все еще там? https://docs.saltstack.com/en/2017.7/ref/states/requisites.html#check-cmd Я только что повторил фрагмент выше с помощью 2017.7.2, и он по-прежнему работает так, как ожидалось. – oeuftete

0

Соль предполагает, что в любое время вы работаете в «ЦМД» состояние, что что-то нужно изменить в вашей системе. Поэтому он хочет предупредить вас, когда ваш cmd терпит неудачу.

Боюсь, что в настоящее время нет встроенного способа игнорировать некоторые отказы состояния. Вы можете сделать запрос на функцию в https://github.com/saltstack/salt/issues

1

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

Run something: 
cmd.run: 
    - name: command_which_can_fail; exit 0 

Это было проверено в Солт 2017.7.0, но, вероятно, работать в более ранних версиях.

Смежные вопросы