Need when condition / solution if possible for running task on a specific host

24 views
Skip to first unread message

Mohtashim S

unread,
Jul 11, 2022, 6:16:34 PM7/11/22
to Ansible Project
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

Dick Visser

unread,
Jul 12, 2022, 12:04:49 AM7/12/22
to ansible...@googlegroups.com
Suppose your playbook does what you (think) you want. Then what do you intend to do with this output?
What if some apps are running on hosts they're not intended to run on? Do you take some corrective measures? Or reinstall the host?
And why is it possible at all that apps appear on random inventory hosts?

Rather than using ansible as a glorified shell wrapper to report proces status, I would use it to set up the infra so that only the right apps run on the right 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 ansible-proje...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/ef324a05-5da8-41e2-b214-611dfdc9afcbn%40googlegroups.com.
--
Sent from Gmail Mobile

Mohtashim S

unread,
Jul 12, 2022, 2:54:42 AM7/12/22
to Ansible Project
The output is for logging and auditing purposes only. 

The apps may be run by other teams on their intended hosts as mentioned in the inventory file or on other hosts where they should not be running.

The dumps would help identify where the app was actually running at the time of play and then the play may choose to start / stop the app at the intended host.

This is a real-world problem and any solution would be appretiated.

Dick Visser

unread,
Jul 12, 2022, 1:51:48 PM7/12/22
to ansible...@googlegroups.com
On Tue, 12 Jul 2022 at 08:54, Mohtashim S <mohta...@gmail.com> wrote:
The output is for logging and auditing purposes only. 

The apps may be run by other teams on their intended hosts as mentioned in the inventory file or on other hosts where they should not be running.

This confirms my suspicion that this isn't a technical problem but rather an organisational one.
Since I don't believe in fixing organisational problems with technological measures, I won't be able to help you with that.
Somebody else might, though.
Reply all
Reply to author
Forward
0 new messages