ansible fetch模块的大文件

时间:2015-07-23 07:02:04

标签: ansible ansible-playbook

我使用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

3 个答案:

答案 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来增加交换次数