先说下ansible拷贝目录或者文件用到的模板:copy
用一个实例介绍吧!
我现在是将我ansible本机的/vrgv/aa目录拷贝到ceshi主机组中的/vrgv/目录下
[root@jenkins ansible]# ansible ceshi -m copy -a "src=/vrgv/aa dest=/vrgv/"
ceshi:是inventory中设置的主机组名,里面有具体主机ip
-m:指定模块
-a:具体操作指令
src=/vrgv/aa: 本机/vrgv/aaa的目录
dest=/vrgv/:远程主机组ceshi的目录
然后开始执行:
[root@jenkins ansible]# ansible ceshi -m copy -a "src=/vrgv/aa dest=/vrgv" 192.168.1.139 | SUCCESS => { "changed": false, "dest": "/vrgv/", "src": "/vrgv/aa" }
从上面看,ansible执行成功了,但是"changed": false,代表第一次运行并没有copy成功,因此远程主机组没有此aa目录。
花费了很久,终于找到了原因,是因为aa是空目录。这时候有人会说了,你为啥不用-vvvvv,因为我用了我没找到原因。
在aa目录中创建一个空的目录后,再次执行:
[root@jenkins ansible]# mkdir /vrgv/aa/aaa [root@jenkins ansible]# ansible ceshi -m copy -a "src=/vrgv/aa dest=/vrgv" 192.168.1.139 | CHANGED => { "changed": true, "dest": "/vrgv/", "src": "/vrgv/aa" }
从上面来看,已经成功了。
使用playbook这么写:
[root@jenkins ansible]# cat copy.yaml --- - hosts: ceshi become: yes tasks: - name: Copy dir copy: src: /vrgv/aa dest: /vrgv