使用ansible下载一个大文件
我想下载一个带有ansible(10GB)的大文件。根据连接情况,这需要半个小时,并且在使用unarchive或get_url时经常失败使用ansible下载一个大文件,ansible,Ansible,我想下载一个带有ansible(10GB)的大文件。根据连接情况,这需要半个小时,并且在使用unarchive或get_url时经常失败 在出现错误和某种进展的情况下,我如何通过恢复来理想地实现这一点?通常使用time\u outvalue在get\u url中执行技巧。 试着把时间缩短到1800秒 如果它不起作用,我建议使用归档程序(我使用7Zip-)将文件分割成块。我认为没有任何方法可以在Ansible中的任务中取得进展。 通过使用命令模块启动curl,并在a中使用--range选项,您可以
在出现错误和某种进展的情况下,我如何通过恢复来理想地实现这一点?通常使用
time\u out
value在get\u url中执行技巧。
试着把时间缩短到1800秒
如果它不起作用,我建议使用归档程序(我使用7Zip-)将文件分割成块。我认为没有任何方法可以在Ansible中的任务中取得进展。
通过使用
命令
模块启动curl
,并在a中使用--range
选项,您可以手动下载多个块,这将是一种进度显示。(您还可以使用
uri
模块和方法:HEAD
来获取文件大小,以计算循环中用于curl调用的范围)
若要在出现错误时继续,请使用带有wget的命令模块及其“--continue”参数来继续下载部分下载的文件,并对任务进行多次重试。在下面的示例中,您可以使用
async
进行此操作,我们正在使用get\u url
和async
选项下载一个大文件,然后等待下载作业完成使用async\u status
模块
- name: Get the tar file from the repo
get_url:
url: "{{ hdf_patch_repo_url }}/{{ hdf_tar_name }}"
dest: "{{ hdf_patch_local_path }}/{{ hdf_tar_name }}"
owner: xxxx
group: xxxx
mode: 0755
async: 6000
poll: 0
register: hdf_patch_download_result
- name: check status of HDF tar file download
async_status:
jid: "{{ hdf_patch_download_result.ansible_job_id }}"
register: hdf_patch_download_job_result
until: hdf_patch_download_job_result.finished
retries: 300
据此,以下命令可与shell一起使用:export ec=18;而[$ec-等式18];do/usr/bin/curl-O-C-“”;出口欧共体=$?;甜甜圈仍然需要一些东西来显示进展。我不能影响文件的大小。只要提高超时时间就不会让我在它失败的情况下恢复它。get_url也不会显示进度。所以这个答案不符合我对这个问题的需求。