¿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.
Puedes usar el with_fileglobbucle para esto:
- copy:
src: "{{ item }}"
dest: /etc/fooapp/
owner: root
mode: 600
with_fileglob:
- /playbooks/files/fooapp/*
/roles/db/filespero no puedo hacerlo funcionar con este método. Lo he intentado,with_fileglob: - /roles/db/file/*pero el camino no va bienfuente
destconjunto como variable?{ src: 'containerizers', dest: {{ containerizers }} }.{ src: '{{ source.var }}', dest: '{{ dest.var }}' }Puede usar with_together para este propósito:
fuente
Si necesita más de una ubicación, necesita más de una tarea. Una tarea de copia puede copiar solo desde una ubicación (incluidos varios archivos) a otra en el nodo.
fuente
fuente
findmódulo solo funciona para ansible 2.x pero no para ansible 1.xstdout_linesen el valor de retorno, pero no es aplicable para elfindmódulo. Sólo se tienefiles,examinedymatchedcomo valores de retorno. Espero que ayuden a otrosfindsolo parece mirar el sistema remoto, no permitiendo tomar nada del nodo de administración. Estas respuestas, usandowith_fileglob, parecen ser más adecuadas: stackoverflow.com/a/42290160/272387 , stackoverflow.com/a/36720342/272387 .Desde Ansible 2.5, las
with_*construcciones están en desuso y seloopdebe usar la sintaxis. Un ejemplo práctico sencillo:fuente
O puede usar with_items:
fuente
fuente
Puede recorrer la variable con la lista de directorios:
fuente
Utilice el siguiente código fuente para copiar varios archivos en su máquina cliente.
Nota:
Si está pasando varias rutas mediante el uso de variables, entonces
src: "/ root / {{item}}"
Si está pasando la ruta utilizando una variable para diferentes elementos, entonces
src: "/ root / {{item.source_path}}"
fuente
copymodule es una herramienta incorrecta para copiar muchos archivos y / o estructura de directorio, usesynchronizemodule en su lugar que usarsynccomo backend. Eso sí, requiere estarrsyncinstalado tanto en el controlador como en el host de destino. Es realmente poderoso, verifique la documentación de ansible .Ejemplo: copiar archivos del
builddirectorio (con subdirectorios) del controlador al/var/www/htmldirectorio en el host de destino:fuente