copy模块主要用于复制文件、目录等,并对其进行权限修改

参数 必填 默认值 注解
backup no no 当复制的文件在远程主机上存在,覆盖前进行备份一次
force no yes 强制覆盖
group no 文件、目录属组,类似 chown 指令
mode no 文件、目录权限,如 mode=644 或者 mode=“u+x,g+x,o+x”类似chmod 指令
owner no 文件、目录属主,类似 chown 指令
src no 复制的源路径
dest yes 复制到远程主机上目标路径
follow no no 当 src 指定的是链接文件,若使用 follow 则会把链接的真实文件复制,否则将仅仅复制 link 文件
directory_mode no 目录模式

Ansible技术问答:http://linux.xyz/topic/Ansible

示例:

# 复制 redis 服务脚本到远程主机机器,force 为强制性复制
- copy: src=/data/ansible/file/redis/redis-server dest=/etc/init.d/ mode=750 owner=root group=root force=yes

# 复制目录,directory_mode 目录模式
- copy: src=/root/nginx dest=/root/nginx mode=750 owner=ops group=ops directory_mode=yes

# 复制前对文件进行备份,backup=yes
- copy: src=/srv/myfiles/foo.conf dest=/etc/foo.conf owner=foo group=foo mode="u+rw,g-wx,o-rwx" backup=yes

# 多个文件的复制,采用循环 with_items
- copy: src={{ item }} dest=/root/
 with_items:
 - /data/a.sh
 - /logs/b.py

# 文件通配符循环 with_fileglob
- copy: src={{ item }} dest=/etc/fooapp/ owner=root mode=600
 with_fileglob:
 - /playbooks/files/fooapp/*

注:fetch 模块与 copy 相反,是从远程主机复制文件到 ansible 服务器