copy模块可以将Ansible服务器中的文件复制到客户机中。下面将/etc/hosts文件复制至webserver组中客户机的/tmp文件下,命名为“2.txt”,设置文件所有者为“root”,属组为“bin”,操作权限为“777”,代码及结果如下所示。
[root@ansible ~]# ansible webserver -m copy -a 'src=/etc/hosts dest=/tmp/2.txt owner=root group=bin mode=777 backup=yes'
host2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"checksum": "3be18215bc6a05231f0ae11afa87879103ab5474",
"dest": "/tmp/2.txt",
"gid": 1,
"group": "bin",
"mode": "0777",
"owner": "root",
"path": "/tmp/2.txt",
"size": 244,
"state": "file",
"uid": 0
}
host3 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"checksum": "3be18215bc6a05231f0ae11afa87879103ab5474",
"dest": "/tmp/2.txt",
"gid": 1,
"group": "bin",
"mode": "0777",
"owner": "root",
"path": "/tmp/2.txt",
"size": 244,
"state": "file",
"uid": 0
}
host1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"checksum": "3be18215bc6a05231f0ae11afa87879103ab5474",
"dest": "/tmp/2.txt",
"gid": 1,
"group": "bin",
"mode": "0777",
"owner": "root",
"path": "/tmp/2.txt",
"size": 244,
"state": "file",
"uid": 0
}
通过代码的反馈结果可以看到,host1、host2、host3均已完成复制操作,分别查看这三台客户机的复制结果,代码如下所示。
[root@host1 ~]# ll /tmp/
总用量 4
-rwxrwxrwx 1 root bin 244 3月 23 13:51 2.txt
drwx------ 3 root root 17 12月 9 2019 systemd-private-d42b8c706e01472da32f001324dcc7c4-chronyd.service-pKTwcf
[root@host2 ~]# ll /tmp
总用量 4
-rwxrwxrwx 1 root bin 244 3月 23 13:51 2.txt
drwx------ 3 root root 17 3月 23 09:44 systemd-private-4b4ad22c2195448dbbeadc60e87f2d57-chronyd.service-RWH966
drwx------ 2 root root 6 3月 23 09:44 vmware-root_6133-1958488615
[root@host3 ~]# ll /tmp
total 4
-rwxrwxrwx 1 root bin 244 Mar 22 22:51 2.txt
drwx------ 3 root root 17 Mar 22 18:44 systemd-private-764bd538296d438fadcf4807862e2fdc-chronyd.service-1MFCjn
drwx------ 3 root root 17 Mar 22 18:44 systemd-private-764bd538296d438fadcf4807862e2fdc-httpd.service-LTSVRz
drwx------ 3 root root 17 Feb 10 2020 systemd-private-e96d709738d44b1b82ceca8d31a58867-httpd.service-TlnUir
drwx------ 2 root root 6 Mar 22 18:44 vmware-root_6344-1003141338
通过代码的反馈结果可以看到,host1、host2、host3的/tmp文件下都存在2.txt文件,说明复制操作成功。查看复制完成的2.txt文件内容,结果如下所示。
[root@host2 ~]# cat /tmp/2.txt
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.226.11 ansible
192.168.226.12 host1
192.168.226.13 host2
192.168.226.14 host3
通过代码的反馈结果可以看到,2.txt的文件内容与之前配置的Ansible服务器的hosts文件内容一致。除了定义文件路径及操作权限之外,读者还可以根据需要自定义其他参数,常用的参数如表1.4所示。
表1.2 copy模块常用参数
参数 | 默认值 | 可选值 | 备注 |
---|---|---|---|
backup | no | yes/no | 在覆盖之前将原文件备份,备份文件包含时间信息 |
content | - | - | 当用content代替src参数的时候,可以把文档的内容设置到特定的值 |
dest | - | - | 目标绝对路径。如果src是一个目录,dest也必须是一个目录。如果dest是不存在的路径,并且如果dest以/结尾或者src是目录,则dest被创建。如果src和dest是文件,如果dest的父目录不存在,任务将失败 |
follow | no | yes/no | 是否遵循目的机器中的文件系统链接 |
force | yes | yes/no | 当内容不同于源时,将替换远程文件。设置为no,则只有在目标不存在的情况下才会传输文件 |
group | no | - | 设置文件/目录的所属组 |
local_follow | yes | yes/no | 是否遵循本地机器中的文件系统链接 |
mode | - | - | 设置文件权限 |
owner | - | - | 设置文件/目录的所属用户 |
src | - | - | 将本地路径复制到远程服务器; 可以是绝对路径或相对的。如果是一个目录,它将被递归地复制。如果路径以/结尾,则只有该目录下内容被复制到目的地,如果没有使用/来结尾,则包含目录在内的整个内容全部复制 |
unsafe_writes | - | yes/no | 是否以不安全的方式进行,可能导致数据损坏 |
validate | None | - | 复制前是否检验需要复制目的地的路径 |
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。