J'utilise Ansible pour copier un répertoire (900 fichiers, 136 Mo) d'un hôte à un autre:
---
- name: copy a directory
copy: src={{some_directory}} dest={{remote_directory}}
Cette opération prend 17 minutes, alors qu’un simple scp -r <src> <dest>
ne prend que 7 secondes.
J'ai essayé le mode accéléré, qui, selon le ansible docs "peut être 2 à 6 fois plus rapide que SSH avec ControlPersist activé, et 10 fois plus rapide que paramiko.", Mais en vain.
La configuration synchronize
peut être difficile dans les environnements avec become_user
. Pour les déploiements uniques, vous pouvez archiver le répertoire source et le copier avec le module unarchive
:
- name: copy a directory
unarchive:
src: some_directory.tar.gz
dest: {{remote_directory}}
creates: {{remote_directory}}/indicator_file
La meilleure solution que j'ai trouvée consiste simplement à compresser le dossier et à utiliser le module unarchive
.
Dossier de 450 Mo terminé en 1 minute.
unarchive:
src: /home/user/folder1.tar.gz
dest: /opt
Bien que synchronize
soit plus préférable dans ce cas que copy
, il est cuit par rsync. Cela signifie que les inconvénients de rsync (architecture client-serveur) sont également conservés: limites du processeur et du disque, calculs delta dans le fichier lents pour les gros fichiers, etc. solution basée sur une architecture peer-to-peer, rapidement et facilement évolutive sur de nombreuses machines. Quelque chose comme Resilio Connect, basé sur BitTorrent.