ansible文件分发synchronize加速

508 阅读1分钟

背景

使用ansible的synchronize命令进行文件分发时,如果目标文件比较大的情况下会非常耗时,因此期望找到一种简便的方式可以加速文件的分发。

分析

分析了ansible的synchronize命令源码,发现其原理是将rsync命令进行了一下封装,内置了一些默认配置,比如发送文件前默认会进行数据压缩,这个参数实际是这个问题的关键。

默认启用数据压缩按理说也是为了让传输速度变快,但实际这里的意图是在网络带宽比较小的情况下考虑的,在一些局域网的场景下其实不压缩更快,局域网下通常网卡能达到200+MB/s,默认启用数据压缩时,实际网络发包速度仅为20+MB/s,相差10+倍。

解决办法

在synchronize中配置不启用数据压缩(compress配置为no),示例:

- name: Copy file
  synchronize:
    src: "xx.tar"
    dest: /tmp/
    compress: no