Copier plusieurs fichiers avec Ansible

Comment puis-je copier plus d’un fichier unique dans des nœuds distants par Ansible dans une tâche?

J’ai essayé de dupliquer la ligne de module de copie dans ma tâche pour définir des fichiers mais elle ne fait que copier le premier fichier.

Vous pouvez utiliser la boucle with_fileglob pour cela:

 - 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 

Vous pouvez utiliser with_together à cette fin:

 - name: Copy multiple files to multiple directories copy: src={{ item.0 }} dest={{ item.1 }} with_together: - [ 'file1', 'file2', 'file3' ] - [ '/dir1/', '/dir2/', '/dir3/' ] 

Si vous avez besoin de plusieurs emplacements, vous avez besoin de plusieurs tâches. Une tâche de copie ne peut copier que d’un emplacement (y compris de plusieurs fichiers) vers un autre sur le noeud.

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

Ou vous pouvez utiliser with_items:

 - copy: src: "{{ item }}" dest: /etc/fooapp/ owner: root mode: 600 with_items: - dest_dir 
 - name: find inq.Linux* find: paths="/appl/scripts/inq" recurse=yes patterns="inq.Linux*" register: find_files - name: set fact set_fact: all_files: - "{{ find_files.files | map(atsortingbute='path') | list }}" when: find_files > 0 - name: copy files copy: src: "{{ item }}" dest: /destination/ with_items: "{{ all_files }}" when: find_files > 0