这里主要用到两个功能,fetch
和copy
,其中copy
是将文件拷贝到远程机器,二fetch
是把文件从远程拷贝到本机,下面分别做说明(需要注意的是不支持文件夹的拷贝):
前置条件
使用ansible进行拷贝的前置条件是安装ansible的机器上要添加远程机器的地址,后边的范例中的all
即为远程机器映射的地址
1、将文件拷贝到远程机器
标准写法:ansible all -m copy -a "src=/root/test.txt dest=/root"
,此处src
为本机文件路径,而dest
是远程机器的路径。
如下:
[root@centos7 ~]# ansible test -m copy -a "src=test.sh backup=yes dest=/root"
172.20.21.121 | SUCCESS => {
"backup_file": "/root/test.sh.4315.2018-01-12@13:35:35~",
"changed": true,
"checksum": "e989084b3f4610a41811c5ea280b14f7c5e855f5",
"dest": "/root/test.sh",
"gid": 0,
"group": "root",
"md5sum": "7c211ce4c7941a5bb064e77d69e3d9ff",
"mode": "0755",
"owner": "root",
"secontext": "unconfined_u:object_r:admin_home_t:s0",
"size": 23,
"src": "/root/.ansible/tmp/ansible-tmp-1515735334.86-21848883747071/source",
"state": "file",
"uid": 0
}
---------------------
作者:hoxis
来源:优快云
原文:https://blog.youkuaiyun.com/bruce_6/article/details/79043529
版权声明:本文为博主原创文章,转载请附上博文链接!
2、将远程服务器文件拷贝到本机
标准写法:ansible all -m copy -a "src=/root/test.txt dest=/root force=yes backup=yes
,此处src
为远程机器上的地址,dest
为本机的文件夹地址,即文件拷贝过来放置的文件夹的地址,而backup=yes
为覆盖原文件;
范例如下:
ansible test_63 -m fetch -a "src=/allure-results.tar.gz dest=${workspace} force=yes"
结果:
+ ansible test_63 -m fetch -a 'src=/allure-results.tar.gz dest= force=yes'
test_63 | SUCCESS => {
"changed": true,
"checksum": "5ce87fbcf8ae4cde43babf5d6be8f0eb417f36cb",
"dest": "/data/nexus/jenkins/workspace/dispatch_smoke_test/test_63/allure-results.tar.gz",
"md5sum": "2793128b59e192962595d43e9c4ed110",
"remote_checksum": "5ce87fbcf8ae4cde43babf5d6be8f0eb417f36cb",
"remote_md5sum": null
}