Ok wrote this simple playbook just to test it:

---
- hosts: localhost
  gather_facts: false
  connection: local
  sudo: false
  tasks:
   - set_fact:
       vard: "Chassis Power is on"

   - shell: "echo {{ vard }} | grep 'Chassis Power is on'"
     ignore_errors: yes
     register: vard_result

   - debug: msg="Found it!"
     when: vard_result.rc == 0
     with_items: vard_result.stdout_lines

   - debug: msg="Found it again!"
     when: vard_result.stdout.find('Chassis Power is on') != -1

   - debug: msg="Found it again and again!"
     when: "'Chassis Power is on' in vard"

the run output:

$ ansible-playbook -i local tt4.yml

PLAY [localhost] 
************************************************************** 

TASK: [set_fact ] 
************************************************************* 
ok: [localhost]

TASK: [shell echo {{ motd }} | grep 'Chassis Power is on'] 
******************** 
changed: [localhost]

TASK: [debug msg="Found it!"] 
************************************************* 
ok: [localhost] => (item=Chassis Power is on) => {
    "item": "Chassis Power is on",
    "msg": "Found it!"
}

TASK: [debug msg="Found it again!"] 
******************************************* 
ok: [localhost] => {
    "msg": "Found it again!"
}

TASK: [debug msg="Found it again and again!"] 
********************************* 
ok: [localhost] => {
    "msg": "Found it again and again!"

so no surprises here I can match the string in 3 different ways. This is 
based on the result of running ipmi on one of my servers:

root@virtual:~# ipmitool power status
Chassis Power is on
root@virtual:~#

which shows a single line being returned upon execution.

Now the only thing I can think of is that this might be different in your 
case. Do you mind showing us the output of your playbook run? I'm 
especially interested to see the output of

debug: var=power.stdout


Cheers,
Igor

On Wednesday, August 5, 2015 at 6:20:47 PM UTC+10, kevin parker wrote:
>
> *contents of input.yml*
>
> ---
>
> computeserver1:
>   - name: compute4
>     ipaddress: 192.168.211.251
>     console: 192.168.211.10
>     consoleuser: administrator
>     consolepassword: 1
>    
>
> computeserver2:
>   - name: compute5
>     ipaddress: 192.168.211.253
>     console: 192.168.211.11
>     consoleuser: administrator
>     consolepassword: 1
>
> with out register: everything works but i want to take action based on the 
> result returned by ipmi.So i am trying register: to save result of ipmi and 
> then based on the result ,sending ipmi reset/ON for a set of servers.
>
> On Wednesday, August 5, 2015 at 9:03:36 AM UTC+5:30, Igor Cicimov wrote:
>>
>> Can you share the structure of the "computeserver1" or even better the 
>> content of the input.yml file?
>>
>> I guess you have confirmed that executing the same ipmi command from the 
>> Ansible station manually works properly?
>>
>> On Tuesday, August 4, 2015 at 3:06:49 AM UTC+10, kevin parker wrote:
>>>
>>> i am trying to use "ipmitools" to check power status and based on the 
>>> result i will start/reset the server.But i am not able to continue as 
>>> register: and looping are not working .Is there any alternate approach for 
>>> achieving below? 
>>>
>>>
>>>
>>> ---
>>> - hosts: compute
>>>   gather_facts: no
>>>   vars_files:
>>>     - input.yml
>>>
>>>   tasks:
>>>
>>>    - name: check Power status of target
>>>      local_action:  command ipmitool -I lanplus -H {{item.console}} -U 
>>> {{item.consoleuser}} -P {{item.consolepassword}} power status
>>>      with_items:
>>>        - "{{ computeserver1 }}"
>>>      when: item.console and item.consoleuser and item.consolepassword is 
>>> defined
>>>      register: power
>>>
>>>    - name: check Debug
>>>      debug: var=power.stdout
>>>
>>>    - name: Power Reset
>>>      local_action: command ipmitool -I lanplus -H {{item.console}} -U 
>>> {{item.consoleuser}} -P {{item.consolepassword}} power reset
>>>      with_items:
>>>        - "{{ computeserver1 }}"
>>>      when: item.console and item.consoleuser and item.consolepassword is 
>>> defined and power.stdout.find('Chassis Power is on') != -1
>>>
>>>    - name: Power On
>>>      local_action: command ipmitool -I lanplus -H {{item.console}} -U 
>>> {{item.consoleuser}} -P {{item.consolepassword}} power on
>>>      with_items:
>>>        - "{{ computeserver1 }}"
>>>      when: item.console and item.consoleuser and item.consolepassword is 
>>> defined and power.stdout.find('Chassis Power is off') != -1
>>>
>>>  Thanks for any help
>>>
>>

-- 
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/927b99c1-be58-4457-96e8-eb4abd310c63%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to