[ansible] 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/' ]


답변

둘 이상의 위치가 필요한 경우 둘 이상의 작업이 필요합니다. 하나의 복사 작업은 한 위치 (여러 파일 포함)에서 노드의 다른 위치로만 복사 할 수 있습니다.

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


답변

2.5 Ansible 때문에 with_*구조가 사용되지 않으며 , 그리고 loop구가 사용되어야한다. 간단한 실용적인 예 :

- name: Copy CA files
  copy:
    src: '{{item}}'
    dest: '/etc/pki/ca-trust/source/anchors'
    owner: root
    group: root
    mode: 0644
  loop:
    - symantec-private.crt
    - verisignclass3g2.crt


답변

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


답변

또는 with_items를 사용할 수 있습니다.

- copy:
    src: "{{ item }}"
    dest: /etc/fooapp/
    owner: root
    mode: 600
  with_items:
    - dest_dir