Hello Love,

You cannot implement this scenario using Notify-Handler. You will have to 
use the WHEN condition (Implementation shown in below playbook).


One of the property of Handlers is that they get fired only if there is a 
change in state of the task which is triggering the notification (Notify 
Statement). 
In your use-case there are 2 scenarios:

*Scenario-1: *The destination maven repo does not exist and is created by 
the File module. In this case there is a change in state of task which 
triggers the Notification to "maven repo created" handler. Hence the 
handler will execute and the files would get copied.

 

*Scenario-2:  *The destination maven repo already exists and File module 
does nothing that results in the change of state of the task. Hence when 
the notification reaches the Handler it does nothing and files are not 
copied. 

 

Since this is a valid effect produced by the Handler hence there were no 
error/alerts thrown during the playbook execution. 

 

*Correct playbook: *

---

- hosts: test

   remote_user: deploy

   become: yes

   become_method: sudo

   connection: ssh

   gather_facts: yes

 

   tasks:

    - name: Create maven if not exist

      file:

        path: /opt/dtv/apache-maven-3.5.0/.m2/repository

        state: directory

        owner: root

        group: root

        mode: 0755

    - name: check if maven repo exists on destination server

      stat: path=/opt/dtv/apache-maven-3.5.0/.m2/repository

      register: stat_result

    - debug: var=stat_result

    - name: copy files from source to destination

      copy:

       src: "{{ item.src }}"

       dest: "{{ item.dest }}"

       mode: "{{ item.mode }}"

      with_items:

       - { src: '/home/psk/settings.xml',dest: 
'/opt/dtv/apache-maven-3.5.0/.m2/repository/',mode: '0755'}

       - { src: '/etc/ansible/roles/common/files/settings.xml' , dest: 
'/opt/dtv/apache-maven-3.5.0/conf/' , mode: '0644'}

       - { src: '/etc/ansible/roles/common/files/archetype-catalog.xml' , 
dest: '/opt/dtv/apache-maven-3.5.0/.m2/repository/' , mode: '0644'}

      when: stat_result.stat.exists == True


Thanks

Soniya

On Friday, December 8, 2017 at 3:24:58 AM UTC+5:30, Love wrote:
>
> Hello Soniya,
>
> Sent reply to only you as verbose output was too huge, please send me 
> alone your email if you haven't received it so I can send you as an 
> attachment.
>
> On Thursday, December 7, 2017 at 12:50:25 AM UTC-8, Soniya panwar wrote:
>>
>> Hello Love,
>>
>>
>> It will be a great help if you can share the screenshot of your 
>> playbook’s output as well as the screenshot of source and destination.
>>
>> The above playbook is working perfectly fine in our environment.
>>
>>  
>>
>> Thanks 
>>
>> Soniya
>>
>> On Friday, December 1, 2017 at 6:53:51 PM UTC+5:30, Love wrote:
>>>
>>> Hello Soniya,
>>>
>>> Thanks for your input, I see code executed successfully without errors 
>>> but files were not copied to desired destinations. 
>>>
>>>
>>> On Monday, November 27, 2017 at 8:51:44 PM UTC-8, Soniya panwar wrote:
>>>>
>>>> Hello,
>>>>
>>>> You may use below code to perform many to many copy. You may use a when 
>>>> condition to ensure that copy task takes place only when the directory is 
>>>> sucessfully created. In case of directory creation getting failed, the 
>>>>
>>>> copy task would not be performed. 
>>>>
>>>> Below is the detailed playbook:
>>>> 1. create the directory 
>>>> 2. check if maven repo directory exists on destination server
>>>> 3. copy files from source to destination once the creation is successful
>>>>
>>>>
>>>> --- # Deploy EP7.0 on desired servers
>>>>  - hosts: test
>>>>    remote_user: deploy
>>>>    become: yes
>>>>    become_method: sudo
>>>>    connection: ssh
>>>>    gather_facts: yes
>>>>    tasks:
>>>>     - name: Create maven if not exist
>>>>       file:
>>>>         path: /opt/dtv/apache-maven-3.5.0/.m2/repository
>>>>         state: directory
>>>>         owner: root
>>>>         group: root
>>>>         mode: 0755
>>>>     - name: check if maven repo exists on destination server
>>>>       stat: path=/opt/dtv/apache-maven-3.5.0/.m2/repository
>>>>       register: stat_result
>>>>     - debug: var=stat_result
>>>>     - name: copy files from source to destination
>>>>       copy:
>>>>        src: "{{ item.src }}"
>>>>        dest: "{{ item.dest }}"
>>>>        mode: "{{ item.mode }}"
>>>>       with_items:
>>>>        - { src: '/home/psk/settings.xml',dest: 
>>>> '/opt/dtv/apache-maven-3.5.0/.m2/repository/',mode: '0755'}
>>>>        - { src: '/etc/ansible/roles/common/files/settings.xml' , dest: 
>>>> '/opt/dtv/apache-maven-3.5.0/conf/' , mode: '0644'}
>>>>        - { src: '/etc/ansible/roles/common/files/archetype-catalog.xml' 
>>>> , dest: '/opt/dtv/apache-maven-3.5.0/.m2/repository/' , mode: '0644'}
>>>>       when: stat_result.stat.exists == True
>>>>
>>>>
>>>>
>>>> *Output:-*
>>>>
>>>> TASK [maven repo created] 
>>>> **********************************************************************************************************************************************
>>>> ok: [host1] => (item={u'dest': 
>>>> u'/opt/dtv/apache-maven-3.5.0/.m2/repository/', u'src': 
>>>> u'/home/psk/settings.xml', u'mode': u'0755'})
>>>> ok: [host1] => (item={u'dest': u'/opt/dtv/apache-maven-3.5.0/conf/', 
>>>> u'src': u'/etc/ansible/roles/common/files/settings.xml', u'mode': u'0644'})
>>>> ok: [host1] => (item={u'dest': 
>>>> u'/opt/dtv/apache-maven-3.5.0/.m2/repository/', u'src': 
>>>> u'/etc/ansible/roles/common/files/archetype-catalog.xml', u'mode': 
>>>> u'0644'})
>>>>
>>>> PLAY RECAP 
>>>> *************************************************************************************************************************************************************
>>>> host1                      : ok=5    changed=0    unreachable=0    
>>>> failed=0
>>>>
>>>>
>>>> Thanks 
>>>> Soniya
>>>>
>>>>
>>>> On Thursday, November 23, 2017 at 7:52:38 PM UTC+5:30, Love wrote:
>>>>>
>>>>> Hello Soniya,
>>>>>
>>>>> Yes,
>>>>>
>>>>> First I need to check if the directory exists or NOT & create it, 
>>>>> works perfect!!
>>>>> Second: After the above directory is created, I need to copy 3 
>>>>> different files from 3 different sources to 2 destinations. In other 
>>>>> words 
>>>>> many to many copy is NOT working for me. 
>>>>>
>>>>> Please let me know if its still not clear?
>>>>>
>>>>>
>>>>>
>>>>> On Monday, November 13, 2017 at 9:33:09 PM UTC-8, Soniya panwar wrote:
>>>>>>
>>>>>>
>>>>>> Hello,
>>>>>> Can you please elaborate your tasks more? 
>>>>>> 1. In first task: you are checking if the file is exist on 
>>>>>> destination server, and if not exist you will create new directory?
>>>>>> 2. In second task: you are saying maven repo created but in this task 
>>>>>> you are coping your files src to destination.
>>>>>>
>>>>>> if you can elaborate what is your scenario and why are you using 
>>>>>> handler here, that will be a great help.
>>>>>>
>>>>>> thanks
>>>>>> Soniya
>>>>>>
>>>>>>
>>>>>> On Sunday, November 12, 2017 at 1:13:02 PM UTC+5:30, Love wrote:
>>>>>>>
>>>>>>> We need to be able to copy/push multiple files from multiple sources 
>>>>>>> to multiple destinations on destination servers, I'm having trouble 
>>>>>>> with 
>>>>>>> below code, can anyone suggest the right syntax to update code? 
>>>>>>>
>>>>>>> I have 3 different files and destination is different for all of 
>>>>>>> them and need this across my inventory, from a syntax standpoint I do 
>>>>>>> not 
>>>>>>> have any issues however, it does not push those files to destination 
>>>>>>> servers.
>>>>>>>
>>>>>>>
>>>>>>> --- # Deploy EP7.0 on desired servers
>>>>>>>  - hosts: test
>>>>>>>    remote_user: deploy
>>>>>>>    become: yes
>>>>>>>    become_method: sudo
>>>>>>>    connection: ssh
>>>>>>>    gather_facts: yes
>>>>>>>
>>>>>>>    tasks:
>>>>>>>
>>>>>>>     - name: check if maven repo exists on destination server
>>>>>>>       file:
>>>>>>>         path: /opt/dtv/apache-maven-3.5.0/.m2/repository
>>>>>>>         state: directory
>>>>>>>         owner: root
>>>>>>>         group: root
>>>>>>>         mode: 0755
>>>>>>>       notify: maven repo created
>>>>>>>
>>>>>>>    handlers:
>>>>>>>
>>>>>>>     - name: maven repo created
>>>>>>>       copy:
>>>>>>>        src: "{{ item.src }}"
>>>>>>>        dest: "{{ item.dest }}"
>>>>>>>        mode: "{{ item.mode }}"
>>>>>>>       with_items:
>>>>>>>        - { src: '/home/psk/settings.xml',dest: 
>>>>>>> '/opt/dtv/apache-maven-3.5.0/.m2/repository/',mode: '0755'}
>>>>>>>        - "{ src: '/etc/ansible/roles/common/files/settings.xml' , 
>>>>>>> dest: '/opt/dtv/apache-maven-3.5.0/conf/' , mode: '0755'}"
>>>>>>>        - "{ src: 
>>>>>>> '/etc/ansible/roles/common/files/archetype-catalog.xml' , dest: 
>>>>>>> '/opt/dtv/apache-maven-3.5.0/.m2/repository/' , mode: '0755'}"
>>>>>>>
>>>>>>>     - debug: var=result
>>>>>>>
>>>>>>>

-- 
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 post to this group, send email to ansible-project@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/d49cb0b5-bc1b-4541-8ac5-983319eecf1f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to