web-dev-qa-db-fra.com

Pourquoi la copie d'un répertoire avec Ansible est-elle si lente?

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.

46
dokaspar

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
8
void

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
2
Rinu K V

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.

0
Victoria