I'm on the latest version of ansible and python
I wrote a testcase depicting the issue I m facing. I run the below shell-script and pass three application names each of which is an ansible role that executes task on the same node and sleeps (waits) for 10 seconds which means in all it will execute for more than (3X10) 30 seconds if the execution is not parallel Below is my code for shell script and roles that I use to run my ansible-roles playbook: cat /web/admin/playbooks/testpar/run_me_for_restarts.sh SH_APP=$1 echo "OK... Let us execute the Ansible Playbook now..." for i in $(echo $SH_APP | sed "s/,/ /g") do ansible-playbook -v -i /web/admin/playbooks/testpar/va.hosts /web/admin/playbooks/testpar/va_action.yml -e APPNAME=$i done $ cat /web/admin/playbooks/testpar/va_action.yml --- - hosts: localhost user: wladmin strategy: free vars: ansible_ssh_extra_args: -o StrictHostKeyChecking=no -o ServerAliveInterval=50 roles: - { role: "{{APPNAME}}" } cat /web/admin/playbooks/testpar/roles/<appname>/tasks/main.yml --- - name: Copying the Startup Wrap-up script to the Domain_Home/bin directory template: src: "{{role_path}}/templates/wrapper.j2" dest: "/tmp" mode: 0744 - name: Executing sleep task command: "/tmp/wrapper.j2 &" ignore_errors: yes cat /web/admin/playbooks/testpar/roles/<appname>/templates/wrapper.j2 #!/bin/sh echo "started ...." >/tmp/par_{{ APPNAME }}.log sleep 10 echo "done ...." >/tmp/par_{{ APPNAME }}.log Below output shows that the execution is not parallel and takes 43 seconds instead of 10+ seconds time /web/admin/playbooks/testpar/run_me_for_restarts.sh appone,apptwo,appthree OK... Let us execute the Ansible Playbook now... Using /etc/ansible/ansible.cfg as config file PLAY [localhost] ********************************************************************************************** TASK [Gathering Facts] **************************************************************************************** ok: [localhost] TASK [appone : Copying the Startup Wrap-up script to the Domain_Home/bin directory] ************************** changed: [localhost] => {"changed": true, "checksum": "543c342a48380d78929cecacfb0319c5575d6d5d", "dest": "/tmp/wrapper.j2", "gid": 64332, "group": "wladmin", "md5sum": "36126e45f90db4ebf16260582cca00c4", "mode": "0744", "owner": "wladmin", "size": 100, "src": "/home/wladmin/.ansible/tmp/ansible-tmp-1623398176.73-12084-156235215973593/source", "state": "file", "uid": 600000008} TASK [appone : Executing sleep task] ********************************** changed: [localhost] => {"changed": true, "cmd": ["/tmp/wrapper.j2", "&"], "delta": "0:00:10.008392", "end": "2021-06-11 02:56:28.387822", "rc": 0, "start": "2021-06-11 02:56:18.379430", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []} PLAY RECAP **************************************************************************************************** localhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 Using /etc/ansible/ansible.cfg as config file PLAY [localhost] ********************************************************************************************** TASK [Gathering Facts] **************************************************************************************** ok: [localhost] TASK [apptwo : Copying the Startup Wrap-up script to the Domain_Home/bin directory] ************************** changed: [localhost] => {"changed": true, "checksum": "bc42fc98344e9de310dc618c6e79de5db7a59de1", "dest": "/tmp/wrapper.j2", "gid": 64332, "group": "wladmin", "md5sum": "2c151bf785a5f7b0fca4b58cf238d50e", "mode": "0744", "owner": "wladmin", "size": 100, "src": "/home/wladmin/.ansible/tmp/ansible-tmp-1623398190.63-12266-31151611835797/source", "state": "file", "uid": 600000008} TASK [apptwo : Executing sleep task] ********************************** changed: [localhost] => {"changed": true, "cmd": ["/tmp/wrapper.j2", "&"], "delta": "0:00:10.007971", "end": "2021-06-11 02:56:42.306926", "rc": 0, "start": "2021-06-11 02:56:32.298955", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []} PLAY RECAP **************************************************************************************************** localhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 Using /etc/ansible/ansible.cfg as config file PLAY [localhost] ********************************************************************************************** TASK [Gathering Facts] **************************************************************************************** ok: [localhost] TASK [appthree : Copying the Startup Wrap-up script to the Domain_Home/bin directory] ****************************** changed: [localhost] => {"changed": true, "checksum": "876833744db44de5afaabe598a31341b6fc800ac", "dest": "/tmp/wrapper.j2", "gid": 64332, "group": "wladmin", "md5sum": "651fb5088564dc481b92401e28267f8e", "mode": "0744", "owner": "wladmin", "size": 92, "src": "/home/wladmin/.ansible/tmp/ansible-tmp-1623398205.43-12442-191618850932513/source", "state": "file", "uid": 600000008} TASK [appthree : Executing sleep task] ************************************** changed: [localhost] => {"changed": true, "cmd": ["/tmp/wrapper.j2", "&"], "delta": "0:00:10.010776", "end": "2021-06-11 02:56:57.241882", "rc": 0, "start": "2021-06-11 02:56:47.231106", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []} PLAY RECAP **************************************************************************************************** localhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 real 0m43.077s user 0m13.285s sys 0m3.957s All the three `/tmp/par_<appname>.log` does get generated. I tried adding `&` to the ansible-playbook command in my shell script so each app is a new ansible-playbook task that runs parallelly but that generates only one `/tmp/par_<appname>.log` and not all three. Also, the execution seems to take same time as before. cat /web/admin/playbooks/testpar/run_me_for_restarts.sh SH_APP=$1 echo "OK... Let us execute the Ansible Playbook now..." for i in $(echo $SH_APP | sed "s/,/ /g") do ansible-playbook -v -i /web/admin/playbooks/testpar/va.hosts /web/admin/playbooks/testpar/va_action.yml -e APPNAME=$i **&** done Output with the `&` changes: time /web/admin/playbooks/testpar/run_me_for_restarts.sh appone,apptwo,appthree OK... Let us execute the Ansible Playbook now... real 0m0.010s user 0m0.003s sys 0m0.008s [wladmin@localhost testpar]$ Using /etc/ansible/ansible.cfg as config file Using /etc/ansible/ansible.cfg as config file Using /etc/ansible/ansible.cfg as config file PLAY [localhost] *************************************************************** TASK [Gathering Facts] ********************************************************* PLAY [localhost] *************************************************************** TASK [Gathering Facts] ********************************************************* PLAY [localhost] *************************************************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [apptwo : Copying the Startup Wrap-up script to the Domain_Home/bin directory] *** ok: [localhost] TASK [appone : Copying the Startup Wrap-up script to the Domain_Home/bin directory] *** ok: [localhost] TASK [appthree : Copying the Startup Wrap-up script to the Domain_Home/bin directory] *** changed: [localhost] => {"changed": true, "checksum": "bc42fc98344e9de310dc618c6e79de5db7a59de1", "dest": "/tmp/wrapper.j2", "gid": 64332, "group": "wladmin", "md5sum": "2c151bf785a5f7b0fca4b58cf238d50e", "mode": "0744", "owner": "wladmin", "size": 100, "src": "/home/wladmin/.ansible/tmp/ansible-tmp-1623397469.29-10776-21357236583355/source", "state": "file", "uid": 600000008} ..... ..... I have read about ansible role parallel execution here [https://stackoverflow.com/questions/53340687/how-to-run-couple-of-roles-in-parallel-in-ansible-playbook][1] however, Can you please suggest how can I get the three app tasks to run in parallel so i take about 10 + seconds only? Tweak, workaround will also be appreciated. [1]: https://stackoverflow.com/questions/53340687/how-to-run-couple-of-roles-in-parallel-in-ansible-playbook -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/b68cf85e-2c86-4a33-a61a-7bad4aca7bffn%40googlegroups.com.