无法使用循环复制文件

时间:2019-08-07 13:00:49

标签: ansible

我正在尝试使用Ansible复制许多文件。 这是我的剧本:

- 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 

这是我的角色/scenario_test/defaults/main.yml

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

我执行剧本时说:

"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"
}

有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

更改:

src: files/

 src: ./files/

答案 1 :(得分:0)

您需要将代码更改为此:

- 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 

除非您使用loop_var选项重新定义列表,否则循环将列表迭代为术语“项目”。因此,当您在src行中调用cenario_name时,实际上是在调用整个列表,而不是列表的迭代。