Akdim Karim
Akdim Karim

Reputation: 15

Can't copy files using loop

I'm trying to copy many files using ansible. this is my playbook :

- name: Copy the scenario test 
        copy: 
            src: files/{{ scenario_name }} 
            dest: /home/{{ user }}/scenario_creation 
            mode: '0644' 
            run_once: true 
        loop: "{{ scenario_name }}" 
        tags: 
            - user 
            - scenario 

and this is my roles/scenario_test/defaults/main.yml

scenario_name: ['topup-scenario.json', 'test.json'] 

when I execute my playbook it says:

"msg": "Could not find or access 'files/[u'topup-scenario.json', u'test.json']'\nSearched in:\n\t/home/path/ansible/plays/files/[u'topup-scenario.json', u'test.json']\n\t/home/path/ansible/plays/files/[u'topup-scenario.json', u'test.json'] on the Ansible Controller.\nIf you are using a module and expect the file to exist on the remote, see the remote_src option"
}

any help ?

Upvotes: 0

Views: 409

Answers (2)

ebrewer
ebrewer

Reputation: 484

You need to change your code to this:

- name: Copy the scenario test 
    copy: 
        src: files/{{ item }} 
        dest: /home/{{ user }}/scenario_creation 
        mode: '0644' 
        run_once: true 
    loop: "{{ scenario_name }}" 
    tags: 
        - user 
        - scenario 

The loop iterates the list to the term 'item', unless you redefine it with the loop_var option. So when you call scenario_name in your src line, you are actually calling the entire list, not an iteration of it.

Upvotes: 0

sadok-f
sadok-f

Reputation: 1457

Change:

src: files/

to

 src: ./files/

Upvotes: 1

Related Questions