用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/*