Ansible-Base-Copy-Module-1
Ansible 的 copy 模块
原文链接:https://blog.csdn.net/qq_39677803/article/details/123040746
功能:将 Ansible 管理主机上的文件拷贝到远程主机中
一、各参数解析
1.1 常用参数
1 2 3 4 5
| src: 待copy的文件或目录 dest: 目标copy到远程主机的具体目录(必要参数) owner: 目标copy到远程主机后的属主(远程主机上必须有对应的用户,否则报错) group: 目标copy到远程主机后的属组(远程主机上必须有对应的组,否则报错) mode: 目标copy到远程主机后的权限
|
1.2 其他参数
1 2 3 4 5 6 7 8
| content: 若不用 src 指定拷贝的文件,必须用 content 直接指定文件内容,2 选 1。 force: 当远程主机的目标路径中已经存在同名文件,并且与 ansible 主机中的文件内容不同时, 是否强制覆盖,可选值有 yes 和 no。默认值为 yes,表示覆盖, 如果设置为 no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。 backup: 当远程主机的目标路径中已经存在同名文件,并且与 ansible 主机中的文件内容不同时, 是否对远程主机的文件进行备份, 可选值有 yes 和 no,当设置为 yes 时,会先备份远程主机中的文件, 然后再将 ansible 主机中的文件拷贝到远程主机。
|
二、举个栗子
2.1 拷贝单个文件到目标服务器上
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| --- # 目标主机组或名 - hosts: node remote_user: root # 不收集对应主机的信息 gather_facts: false tasks: - name: "copy aaa.txt" copy: src: "/root/aaa.txt" dest: "/tmp" owner: root group: root mode: 755
|
注:由于是 yml 格式文件,所以空格一定要对齐否则脚本会出错
2.2 拷贝多个文件到目标服务器上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| --- - hosts: node gather_facts: no become: yes become_method: sudo tasks: - name: "copy files" copy: src: "{{ item.src }}" dest: "{{ item.dest }}" owner: root group: root mode: 755 with_items: - {src: "/root/aaa.txt", dest: "/tmp" } - {src: "/root/bbb.txt", dest: "/tmp" }
|
2.3 拷贝目录,把目录递归 copy 过去,目标地址也得加上目录名
PS: 没有目录会新建目录
1 2 3 4 5 6 7 8 9 10 11 12
| --- - hosts: node remote_user: root gather_facts: false tasks: - name: "copy dir" copy: src: "/root/test/" dest: "/root/test" owner: root group: root mode: 755
|
2.4 上面 3 个栗子的结果如下:
1
| ansible-playbook dir_copy.yml
|
1 2 3 4 5
| PLAY [test] ***************************************************************************************************************************************** TASK [copy dir] ************************************************************************************************************************************* changed: [192.168.199.205] PLAY RECAP ****************************************************************************************************************************************** 192.168.199.205 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
|