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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/35c50a6c-9edb-487b-90b9-f1f13010cd2d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to