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.