我使用ansible模块fetch
下载一个大文件,表示为2GB。然后我收到以下错误消息。 Ansible似乎无法处理大文件。
fatal: [x.x.x.x] => failed to parse:
SUDO-SUCCESS-ucnhswvujwylacnodwyyictqtmrpabxp
Traceback (most recent call last):
File "/home/xxx/.ansible/tmp/ansible-tmp-1437624638.74-184884633599028/slurp", line 1167, in <module>
main()
File "/home/xxx/.ansible/tmp/ansible-tmp-1437624638.74-184884633599028/slurp", line 67, in main
data = base64.b64encode(file(source).read())
File "/usr/lib/python2.7/base64.py", line 53, in b64encode
encoded = binascii.b2a_base64(s)[:-1]
MemoryError
https://github.com/ansible/ansible/issues/11702
这是一个Ansible错误,已在较新版本中解决。
看起来像您要从中获取的远程服务器在base64编码过程中内存不足。也许改为尝试同步模块(它将使用rsync);并非真正针对大型文件而设计。
Digital Ocean液滴(1 Gb RAM)遇到相同的问题。通过增加交换大小来修复它。
这是获取数据的艰巨任务
- name: Fetch data from remote
fetch:
src: "{{ app_dir }}/data.zip"
dest: "{{ playbook_dir }}/../data/data.zip"
flat: yes
become: no
tags:
- download
使用this playbook进行交换增加ansible