用Ansible复制多个文件

如何通过Ansible在任务中将多个单个文件复制到远程节点?

我试图复制我的任务中的复制模块行来定义文件,但它只复制第一个文件。

你可以使用with_fileglob循环:

 - copy: src: "{{ item }}" dest: /etc/fooapp/ owner: root mode: 600 with_fileglob: - /playbooks/files/fooapp/* 
 - name: Your copy task copy: src={{ item.src }} dest={{ item.dest }} with_items: - { src: 'containerizers', dest: '/etc/mesos/containerizers' } - { src: 'another_file', dest: '/etc/somewhere' } - { src: 'dynamic', dest: '{{ var_path }}' } # more files here 

你可以使用with_together来达到这个目的:

 - name: Copy multiple files to multiple directories copy: src={{ item.0 }} dest={{ item.1 }} with_together: - [ 'file1', 'file2', 'file3' ] - [ '/dir1/', '/dir2/', '/dir3/' ] 
 - hosts: lnx tasks: - find: paths="/appl/scripts/inq" recurse=yes patterns="inq.Linux*" register: file_to_copy - copy: src={{ item.path }} dest=/usr/local/sbin/ owner: root mode: 0775 with_items: files_to_copy.files 

如果您需要多个位置,则需要多个任务。 一个副本任务只能从一个位置(包括多个文件)复制到另一个节点上。

 - copy: src=/file1 dest=/destination/file1 - copy: src=/file2 dest=/destination/file2 # copy each file over that matches the given pattern - copy: src={{ item }} dest=/destination/ with_fileglob: - /files/*