2015-01-13 9 views
7

Sto provando a richiamare un comando sul provisioning via Saltstack. Se il comando fallisce, si verifica un errore di stato e non lo voglio (il retcode del comando non ha importanza).Saltstack: ignorando il risultato di cmd.run

Attualmente ho la seguente soluzione:

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

c'è un modo per rendere tale stato ignorare retcode utilizzando le funzionalità di sale? o forse posso escludere questo stato dai log?

risposta

9

Uso check_cmd:

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

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

uscita:

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 non esiste più su 2017.7.0 – Dereckson

+1

@Dereckson No, è ancora lì? https://docs.saltstack.com/en/2017.7/ref/states/requisites.html#check-cmd Ho appena ripetuto lo snippet sopra con 2017.7.2 e funziona ancora come previsto. – oeuftete

0

Salt presuppone che ogni volta che si esegue uno stato di "cmd", che qualcosa sta per essere modificato nel sistema. Quindi vuole avvisarti quando il tuo cmd fallisce.

Temo che non ci sia un modo integrato di ignorare alcuni errori di stato in questo momento. È possibile effettuare una richiesta di funzionalità a https://github.com/saltstack/salt/issues

1

Se non ti importa quello che il risultato del comando è, si può utilizzare:

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

Questo è stato testato a Salt 2017.7.0 ma probabilmente funzionerebbe in versioni precedenti.