ansible2.4 使用synchronize会有bug, ping模块可以ping通,但是synchronize模块还是需要输入密码,除非做免密登陆。可以用过升级ansible 版本解决。
使用ansible copy模复制文件夹效率远远不及synchronize
同一个77m大小的文件,copy模块需要耗时一分多,但是synchronize只要5秒
“copy”模块以递归方式复制工具无法扩展到大量(>数百个)文件。
The “copy” module recursively copy facility does not scale to lots (>hundreds) of files. For alternative, see synchronize module, which is a wrapper around rsync.
https://docs.ansible.com/ansible/copy_module.html
synchronize的主要弊端是需要安装rsync,不过一般linux服务器上都有这个。
As far as I can tell synchronize has all the functionality that copy does but may be much faster so I'm considering changing everything to use synchronize. The only downside of synchronize is that rsync is required, which seems fairly ubiquitous in the Linux environment.
使用copy模块耗时
date1=`date`;ansible ac-wehub -m copy -a "src=/data/module/tmp/jenkins/ac-wehub dest=/data/module/tmp/jenkins/ ";date2=`date`;echo -e "执行前时间 $date1 \n\r执行完成时间 $date2"
删除copy模块复制过去的文件夹之后 使用synchronize耗时
ansible ac-wehub -a "rm -rf /data/module/tmp/jenkins/ac-wehub"
date1=`date`;ansible ac-wehub -m synchronize -a "src=/data/module/tmp/jenkins/ac-wehub dest=/data/module/tmp/jenkins/ delete=yes checksum=yes ";date2=`date`;echo -e "执行前时间 $date1 \n\r执行完成时间 $date2"
效率上就有明显的差距。对于部署大量项目的时候来说 就更为明显了。
有些校验出来一致的jar 都不需要重新复制
以下是关于rsync的模块。
参数 |
必填 |
默认值 |
选项 |
说明 |
archive |
no |
yes |
yes no |
显示rsync的存档标志所属信息 |
checksum |
no |
no |
yes no |
校验 |
compress |
no |
yes |
yes no |
在传送过程中压缩文件数据 |
dest |
yes |
|
|
目标路径,路径可以绝对或相对 |
delete |
no |
no |
yes no |
删除srv中不存在的文件 |
copy_links |
no |
no |
yes no |
复制符号链接,是映射的文件复制 |
dest_port |
no |
22 |
yes no |
目标主机端口号(ansible_ssh_port优先于此值) |
group |
no |
存档选项值 |
yes no |
保留文件的所属组 |
owner |
no |
存档选项值 |
yes no |
保留文件的所属者(只有超级用户可以操作) |
perms |
no |
存档选项值 |
yes no |
保留文件的权限 |
rsync_opts |
no |
no |
|
通过此选项指定其他的rsync的选项 |
rsync_path |
no |
|
|
指定rsync命令到远程主机上运行 |
rsync_timeout |
no |
0 |
|
指定rsync的timeout时间以秒为单位 |
src |
yes |
|
|
源地址(路径可以是绝对或相对的) |
times |
no |
存档选项值 |
yes no |
保留文件的修改时间 |
exclude-from |
no |
no |
yes no |
用于定义排除多个文件夹和文件 |
exclude |
no |
no |
yes no |
用于定义排除单独的文件夹和文件 |