1.5.4:copy 模块
copy模块用于从Ansible服务器向远端主机拷贝文件。
官方文档:https://docs.ansible.com/ansible/latest/collections/ansible/builtin/copy_module.html#ansible-collections-ansible-builtin-copy-module
1.5.4.1:常用参数
参数 | 说明 |
---|---|
src | 源路径,即Ansible本机需要拷贝的文件路径。 可以是绝对路径,也可以是相对路径;当采用相对路径时,其路径前缀为当前目录或当前目录下的 files 目录;当指定的路径为目录时:①末尾有 / ,表示复制目录下的所有文件,但不包括目录本身;②末尾没/ ,表示将目录连同其中的文件一起复制。 |
dest | 目标路径,即远程主机上的目标路径(最好指定绝对路径,如果是相对路径,则路径前缀取决于远程主机)。 如果src是目录,则dest也必须是目录; 如果dest以 / 结尾(表示dest是目录)、或src是目录,则当dest不存在时,会自动创建该目录。 |
owner | 指定属主,即所拷贝文件在远程主机上的所有者 |
group | 指定数组,即所拷贝文件在远程主机上的所有组 |
mode | 指定权限,即设置所拷贝文件在远程主机上的权限 |
content | 指定内容,直接生成远程主机上的文件(文件内容即为指定的内容) |
1.5.4.2:示例
拷贝/etc/fstab
并更改属主属组和权限:
[root@ansible ~]# ansible websrvs -m copy -a "src=/etc/fstab dest=/tmp/fstab_ansible.bak owner=testuser group=testuser mode=600"
192.168.1.111 | CHANGED => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3"
},
"changed": true,
"checksum": "93af647ddd8294822a5a28e404fb4ec6d7b46696",
"dest": "/tmp/fstab_ansible.bak",
"gid": 1003,
"group": "testuser",
"mode": "0600",
"owner": "testuser",
"path": "/tmp/fstab_ansible.bak",
"size": 465,
"state": "file",
"uid": 1003
}
root@node111:~# ll /tmp/fstab_ansible.bak
-rw------- 1 testuser testuser 465 Apr 26 16:42 /tmp/fstab_ansible.bak
拷贝目录:
#dest末尾带/,且目录不存在,会自动在远程主机上创建/tmp/etc_backup目录;src末尾带/,会将本机的/etc目录下的所有文件拷贝到dest指定的目录中
[root@ansible ~]# ansible websrvs -m copy -a "src=/etc/ dest=/tmp/etc_backup/"
root@node111:~# ll /tmp/etc_backup/
#src末尾不代/,会将整个/etc目录连同其中的文件拷贝到远程主机的/tmp目录下
[root@ansible ~]# ansible websrvs -m copy -a "src=/etc dest=/tmp/"
root@node111:~# ll /tmp/etc
指定content,直接生成远程主机上的文件内容:
#dest指定的/tmp/test5.txt事先不存在,会创建该文件,并将content指定的内容作为该文件内容
[root@ansible ~]# ansible websrvs -m copy -a "content='test5 file\nnew line\n' dest=/tmp/test5.txt"
root@node111:~# cat /tmp/test5.txt
test5 file
new line