可以在异步模式下复制大文件



当试图将大小为1GB的文件上传到远程服务器时,它显示以下错误:

"此任务不支持异步。">

这里我使用带有复制模块的异步

这是我可靠的战术手册

- hosts: myhost
tasks: 
- name: 'copy large file'
copy:
src: "large_file"
dest: "/home/user"
async: 
poll: 0
register: copy_sleeper
- name: 'check on async task'
async_status:
jid: "{{ copy_sleeper.ansible_job_id }}"
register: job_result
until: job_result.finished
retries: 5

在这种情况下有什么解决方案吗?

我使用scp命令解决了这个问题,如下所示:

- name: Copy large file in async
command: "scp -P {{ssh_port}} path/to/src {{ ssh_user }}@{{ target_host }}:/path/to/dest"
async: 3600
poll: 0
register: copy_sleeper
- name: 'Check if async task has finished'
async_status:
jid: "{{ copy_sleeper.ansible_job_id }}"
register: job_result
until: job_result.finished
retries: 3600

我发现scp和rsync在将大型5GB iso移动到远程系统时非常相似。我把它们都计时在110-115秒左右。

我最终使用了以下脚本,它还避免了rsync 常见的一些权限问题

-name:async_win_vm_files_migration#使用控制系统中的ansible用户和密钥推送rsync副本命令:>rsync-aAXvP--no-g--省略目录时间--no perms-e"ssh-p 925-i/home/ansible/.ssh/id_ed25519"--保留目录链接--exclude={"/dev/*"、"/proc/*"、《/sys/*》、"/tmp/*"、"/run/*"、"/mnt/*","/.git/*","/.pyc/*","/.svn/*","//.gvfs/*"、"/.cache/*"one_answers"/lost+found"}"{{files_path}}/async_large_files/windows_vms/"ansible@{{host_assible_ip}}:/SM/data drive/SM_virt_machines/delegate_to:127.0.0.1成为:是#成为root#ansible在检查是否完成之间应该等待多少秒#如果你知道你的整个剧本要花2分钟,那么你也可以接近这个。#没有"太小"的数字,但如果你投入的秒数超过了整个剧本的运行时间,这将产生一个错误异步:600#5分钟寄存器:sm_async_win_vm_files

最新更新