我使用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
答案 0 :(得分:3)
https://github.com/ansible/ansible/issues/11702
这是一个已在较新版本中解决的Ansible错误。
答案 1 :(得分:1)
在base64编码过程中,您尝试获取的远程服务器看起来正在耗尽内存。也许尝试使用同步模块(将使用rsync); fetch实际上并不适合处理大文件。
答案 2 :(得分:0)
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来增加交换次数