【问题标题】:Large file of ansible fetch moduleansible fetch 模块的大文件
【发布时间】:2015-07-23 07:02:04
【问题描述】:

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

【问题讨论】:

    标签: ansible ansible-playbook


    【解决方案1】:

    https://github.com/ansible/ansible/issues/11702

    这是一个 Ansible 错误,已在较新版本中解决。

    【讨论】:

      【解决方案2】:

      看起来您尝试从中获取的远程服务器在 base64 编码过程中内存不足。也许尝试使用同步模块(它将使用 rsync); fetch 并不是真正为处理大文件而设计的。

      【讨论】:

        【解决方案3】:

        Digital Ocean 液滴(1 Gb RAM)也有同样的问题。 通过增加交换大小来修复它。

        这是获取数据的 ansible 任务

            - 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做swap增加

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-11-18
          • 1970-01-01
          • 2018-11-04
          • 1970-01-01
          • 2022-08-18
          • 2018-03-04
          • 1970-01-01
          相关资源
          最近更新 更多