I have 3 applications hosted on three separate hosts and mentioned in the 
hosts file like below:

cat my.hosts

[app1_webapp]
host3.mybank.com

[app2_webapp]
host5.mybank.com

[app3_webapp]
host8.mybank.com
My requirement is to run two types of raw module commands.

The first raw task which should run on all three hosts for all three 
applications i.e uptime

The second raw task is ps command that should run only on the respective 
host i.e ps -ef | grep app1 should only run on host3.mybank.com

Below is how I call my main.yml

ansible-playbook -i my.hosts main.yml -e appname=app1,app2,app3

cat main.yml

- hosts: "{{ product(appname.split(',')) | 
product(['webapp'])|map('flatten')|map('join', '_') }}"

  user: user1
  gather_facts: no

  tasks:

       - name: Check Running Process
         raw: "ps -ef | grep {{ item }}"
         register: psout
         with_items: "{{ appname.split(',') }}"

       - name: DUMP Running Process
         debug: 
           msg: "{{ psout.stdout }}"

The above raw fails as it tried ps for each app on each hosts which is what 
I wish to skip (correct).

How do I put a when condition so that the ps command for the respective app 
should run on the respective host only and not on all three hosts?

Summary: my problem is regarding standard practice in infrastructure 
management. Each app runs on its own host as specified in the my.hosts 
file. I wish to find if the app process ps -ef | grep <app-name> is running 
on its own host(desired) and not on all inventory-hosts

-- 
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 view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/ef324a05-5da8-41e2-b214-611dfdc9afcbn%40googlegroups.com.

Reply via email to