I have two Plays having one task each.


The first Play 1 checks if the/var/test.datexists on each target host. 


Only if the Play 1 is successful do I want the second play Play 2 to run 
which executes scripts in parallel.


If Play 1 fails i.e if the test.dat does not exist I wish to terminate the 
entire playbook without the Play 2 getting executed. 


For this purpose, I have set any_errors_fatal set to true


I need to have an ansible Play strategy set to free as each of the scripts 
takes 30 minutes to complete hence running them in parallel is the 
requirement.


My understanding of ansible is limited.


I understand that if I have both the tasks under a single Play and set the 
strategy to free both the tasks will run in parallel which is something I 
do not want.


---

- name: Play 1- check for login and script
  hosts: all_hosts
  any_errors_fatal: true
  strategy: free
  tasks:

   - name: Check script existence
     shell: "ls /var/test.dat"
     register: checkscript

   - name:
     fail:
       msg: "script {{ scriptdet }} missing on {{ inventory_hostname }}"
     when: checkscript.rc != 0

- name: Play 2- Run scripts
  hosts: all_hosts
  user: "{{ USER }}"
  strategy: free

  tasks:
   - name: Execute backup script
     shell: "{{ scriptdet }}"
     args:
       chdir: ~/..


I tried the above playbook but I see the second play executes despite the 
first play's task failed.


Can you please suggest how can I get this to work?

-- 
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/1b0ccbc8-6dac-4d90-acd4-c4a852b38f5b%40googlegroups.com.

Reply via email to