tutorial tower source open logo hat ansible

tower - ansible tutorial



Copie varios archivos con Ansible (8)

O puede usar with_items:

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

¿Cómo puedo copiar más de un archivo en nodos remotos por Ansible en una tarea?

Intenté duplicar la línea del módulo de copia en mi tarea para definir archivos, pero solo copia el primer archivo.


Puede usar el bucle with_fileglob para esto:

- copy: src: "{{ item }}" dest: /etc/fooapp/ owner: root mode: 600 with_fileglob: - /playbooks/files/fooapp/*


Puede usar with_together para este propósito:

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


Si necesita más de una ubicación, necesita más de una tarea. Una tarea de copia solo puede copiar de una ubicación (incluidos varios archivos) a otra en el nodo.

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


copy módulo es una herramienta incorrecta para copiar muchos archivos y / o estructura de directorios, use el módulo de synchronize lugar, que usa rsync como back-end. Eso sí, requiere rsync instalado en el controlador y el host de destino. Es realmente poderoso, verifique la documentación ansible .

Ejemplo: copie los archivos del directorio de build (con subdirectorios) del controlador al directorio /var/www/html en el host de destino:

synchronize: src: ./my-static-web-page/build/ dest: /var/www/html rsync_opts: - "--chmod=D2755,F644" # copy from windows - force permissions


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


- 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


- 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(attribute=''path'') | list }}" when: find_files > 0 - name: copy files copy: src: "{{ item }}" dest: /destination/ with_items: "{{ all_files }}" when: find_files > 0