2015-01-13 10 views
7

Próbuję wywołać polecenie dotyczące udostępniania za pośrednictwem Saltstack. Jeśli polecenie nie powiedzie się, otrzymam błąd stanu i nie chcę tego (nie ma znaczenia retcode polecenia).Saltstack: ignorowanie wyniku cmd.run

Obecnie mam następujące rozwiązania:

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

Czy istnieje jakiś sposób, aby taki stan ignorować retcode użyciu funkcji soli? A może mogę wykluczyć ten stan z logów?

Odpowiedz

9

Zastosowanie check_cmd:

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

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

wyjściowa:

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 już nie istnieje 2017.7.0 – Dereckson

+1

@Dereckson Nie, wciąż tam jest? https://docs.saltstack.com/en/2017.7/ref/states/requisites.html#check-cmd Właśnie przetestowałem powyższy fragment w 2017.7.2 i nadal działa zgodnie z oczekiwaniami. – oeuftete

0

Salt zakłada, że ​​w każdej chwili używasz "cmd" stan, że coś dzieje się zmienić w systemie. Więc chce cię ostrzec, gdy twój cmd zawiedzie.

Obawiam się, że nie ma wbudowanego sposobu ignorowania pewnych awarii stanu w tym czasie. Można złożyć wniosek fabularny w https://github.com/saltstack/salt/issues

1

Jeśli nie obchodzi, co wynika z polecenia jest, można użyć:

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

ten został przetestowany w Salt 2017.7.0 ale prawdopodobnie działa w wcześniejsze wersje.