Thanks for the detailed reply.

     - name: Check for ECC's
       shell: ipmitool sel list | grep -i ecc
       register: sel_out
       failed_when: sel_out.rc > 1
       async: 3
       poll: 2


TASK [Check for ECC's] 
**********************************************************************************************************************************************************************************************************************
fatal: [192.168.100.11]: FAILED! => {"failed": true, "msg": "The 
conditional check 'sel_out.rc > 1' failed. The error was: error while 
evaluating conditional (sel_out.rc > 1): 'dict object' has no attribute 
'rc'"}


On Saturday, August 12, 2017 at 1:43:10 AM UTC-7, Kai Stian Olstad wrote:
>
> On 12. aug. 2017 04:09, Ryan wrote: 
> > I tried adding "changed_when" for when sel_out is not defined, but it 
> gives 
> > me an error, so I am not sure how to use "changed_when" in this case. 
>
> I'm sorry, i meant to write failed_when and not changed_when, but the 
> usage is the same. 
>
>
> >   What's the correct usage? 
> > 
> >       - name: Check for ECC's 
> >         shell: ipmitool sel list | grep -i ecc 
> >         register: sel_out 
> >         changed_when: sel_out is not defined 
> >         async: 3 
> >         poll: 2 
> > 
> > fatal: [192.168.100.11]: FAILED! => {"ansible_job_id": 
> > "186470565638.100676", "changed": false, "cmd": "ipmitool sel list | 
> grep 
> > -i ecc", "delta": "0:00:00.094723", "end": "2017-08-12 01:40:04.893313", 
> > "failed": true, "finished": 1, "rc": 1, "start": "2017-08-12 
> > 01:40:04.798590", "stderr": "", "stderr_lines": [], "stdout": "", 
> > "stdout_lines": []} 
>
> As you can see in you fatal output, the sel_out is defined. 
> rc (return code) is 1, failed = true and stdout is empty. 
>
> grep exit with 0 when it finds the string and 1 if it doesn't find the 
> string, so an error you can be defined as rc > 1. 
>
>    - name: Check for ECC's 
>      shell: ipmitool sel list | grep -i ecc 
>      register: sel_out 
>      failed_when: sel_out.rc > 1 
>      async: 3 
>      poll: 2 
>
>
> > I was able to use this method, which seems to work.  Is this the correct 
> > usage of "|| true"? 
> > 
> >       - name: Check for ECC's 
> >         shell: ipmitool sel list | grep -i ecc || true 
> >         register: sel_out 
> >         async: 3 
> >         poll: 2 
>
> By using || true sel_out.rc will always be 0, so you loose the ability 
> to check what return code grep is giving. So i highly recommend the 
> solution above. 
>
>
> > With the above usage, I am back to my original question.  How can I add 
> > conditionals to individual items in a debug msg list? 
>
> Short answer, you can't. 
>
> when can only be used on debug it self, not the msg list. 
>
>
> >  For instance, how 
> > can I add a conditional only for "{{sel_out.stdout.split('\n') }}"?  If 
> i 
> > put the "when" in the same column as "name" and "debug" as Dick 
> suggested, 
> > then it will impact the full debug msg list, not only the sel_out line. 
>
> If the grep doesn't find anything the sel_out.stdout.split('\n') will be 
> a empty string. 
>
> If you don't want that you can split debug in several tasks and use 
> when: on the task. 
>
> or since you have 2 variables, this gives 4 combination, so you could 
> make 4 debug task with 4 different when's. 
>
>
> -- 
> Kai Stian Olstad 
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to ansible-project+unsubscr...@googlegroups.com.
To post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/83d3fa9f-589f-4d66-be35-0a5e2c2efc9b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to